Giter VIP home page Giter VIP logo

demoui's Introduction

设计思路

框架采用python3 + selenium3 + PO + yaml + ddt + unittest等技术编写成基础测试框架,能适应日常测试工作需要。

  • 使用Page Object模式将页面定位和业务操作分开,分离测试对象(元素对象)和测试脚本(用例脚本),一个页面建一个对象类,提高用例的可维护性;
  • 使用yaml管理页面控件元素数据和测试用例数据。例如元素ID等发生变化时,不需要去修改测试代码,只需要在对应的页面元素yaml文件中修改即可;
  • 分模块管理,互不影响,随时组装,即拿即用。

详见:python_selenium自动化测试框架

测试框架分层设计

Image

  • 把常见的操作和查找封装成基础类,不管是什么产品,可直接拿来复用
  • 业务层主要是封装对象页面类,一个页面建一个类,业务层页面继承基础层
  • 用例层针对产品页面功能进行构造摸拟执行测试
  • 框架层提供基础组件,支撑整个流程执行及功能扩展,给用例层提供各页面的元素数据、用例测试数据,测试报告输出等

目录结构介绍

Image

编写用例方法

例如,我们要新增登录功能测试用例:

  • 首先,只需在testyaml目录下新增一个页面对象yaml文件,参考login.yaml格式编写即可。这些文件是提供给封装页面对象类调用并执行定位识别操作。
  • 然后,在page_obj目录下新增一个loginPage.py文件,是用来封装登录页面对象类,执行登录测试流程操作。
  • 最后,在testcase目录下创建测试用例文件login_sta.py,采用ddt数据驱动读取yaml测试数据文件 综上所述,编写用例方法只需要按以上四个步骤创建->编写即可。

测试结果展示

  • HTML报告日志 Image
  • HTML报告点击截图,弹出截图 Image
  • 测试报告通过的日志 Image
  • 自动截图存放指定的目录 Image
  • 邮件测试报告 Image

demoui's People

Contributors

yingoja avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

demoui's Issues

请问怎么与要测试的页面对接呢?

不好意思,有几个问题想问下:
1.这个框架怎么与要测试的页面对接呢?怎么把我要测试的页面加进去呀?
2.以登录为例,若登录成功,跳转到首页,这个在测试中如何体现呢?
在线等大佬回答~

单独运行HTMLTestRunner,报错

self.passrate = str("%.2f%%" % (float(result.success_count) / float(result.success_count + result.failure_count + result.error_count) * 100))

楼主你好,问下我clone工程后,运行你的login_sta.py用例报错,帮忙看下这个是什么问题?

image

好像是下面这里抛出的异常,这里没看到使用本地Chrome驱动的地方:
image

具体报错内容:

D:\PythonSelenium\DemoUI\public\models\GetYaml.py:19: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
data =yaml.load(f)
D:\PythonSelenium\DemoUI\testcase\setup_sta.py:16: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
LoginData = yaml.load(f_login)
D:\PythonSelenium\DemoUI\testcase\setup_sta.py:22: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
SetupData = yaml.load(f_setup)
驱动异常-> HTTPConnectionPool(host='127.0.0.1', port=4444): Max retries exceeded with url: /wd/hub/session (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000021FBED9F4C8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))
Failure
Traceback (most recent call last):
File "D:\Applications\Scoop\apps\python\current\lib\unittest\suite.py", line 163, in _handleClassSetUp
setUpClass()
File "D:\PythonSelenium\DemoUI\public\models\myunit.py", line 17, in setUpClass
cls.driver.implicitly_wait(10)
AttributeError: 'NoneType' object has no attribute 'implicitly_wait'

Assertion failed

Ran 0 tests in 5.051s

FAILED (errors=1)

Process finished with exit code 1

Assertion failed

Assertion failed

执行总是报错,各位大佬碰到过么?

C:\Users\IT\Downloads\Software\Python\python.exe C:/Users/IT/Desktop/DemoUI-master/run_demoui_test.py
E login_sta (unittest.loader._FailedTest)
E setup_sta (unittest.loader._FailedTest)

Time Elapsed: 0:00:00.001000

Process finished with exit code 0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.