简介
基于pytest实现测试用例收集方案、自定义参数化方案、页面元素定位数据存储方案、测试用例数据存储和维护方案,这样可直接进入到设计编写测试用例业务代码阶段,避免重复设计这些方案以及方案不统一导致维护复杂、困难的烦恼。实现了可设置用例执行顺序,且不会与pytest-depends插件的依赖排序冲突,这样配合pytest-depends就可以很好的实现测试用例间的依赖设置。修改定制并汉化了html测试 告,使 告显示我们关心的数据,并更加简洁、美观、易读。采用test object设计模式,以及引入链式编程,语义清晰。对selenium、appium、minium(微信小程序自动化测试库)以及WinAppDriver(微软官方提供的一款用于做Window桌面应用程序的界面(UI)自动化测试工具)做了封装集成,更好的支持桌面端web界面、移动端app界面、微信小程序界面以及Window桌面应用程序的界面(UI)的自动化测试。
环境准备
序 | 库/插件/工具 | 安装命令 |
1 | python 3.x | |
2 | selenium | pip install selenium |
3 | appium | pip install Appium-Python-Client |
4 | pytest | pip install pytest |
5 | pytest-html | pip install pytest-html |
6 | xlrd | pip install xlrd==1.2.0 |
7 | pyautogui | pip install pyautogui |
8 | PyAutoIt | pip install PyAutoIt |
用例收集方案
相比于pytest默认的命名匹配收集测试用例方案,我更倾向testng使用@Test注解标记测试用例的方案,于是,参考了testng,形成了自己的一套测试收集方案:
- 测试用例业务代码需要放在包sevenautotest的子包testcases下,执行测试时自动去该包下查找出所有测试用例来执行
- 测试用例类需要继承抽象用例类(BaseTestCase)
- 使用@pytest.mark.testcase标记测试用例方法,使用位置参数设置用例名,关键字参数author设置用例编 写者和editor设置最后修改者
- 测试方法需要接收一个参数,参数化时从测试数据文件取出的该方法测试数据作为字典传给该测试方法
这种方案没有用例名称上的限制,如何实现我们的自定义收集方案,这就涉及到pytest以下几个钩子函数:
- pytest_configure(config)
- pytest_pycollect_makeitem(collector, name, obj)
- pytest_collection_modifyitems(session, config, items)
实现代码如下:
用例数据存储格式
测试用例数据存放excel文件中,文件名需以测试类名作为名称,文件只存放该类下的测试用例方法数据,统一放在主目录下的testdata目录下。数据在文件中以用例数据块的方式存储,数据块定义如下:
- 所有行中的第一列是标记列,第一行第一列是数据块开始标记
- 第一行: 用例名称信息(标记列的下一列是用例方法名称列,之后是用例名称列)
- 第二行: 用例数据标题
- 第三行 开始 每一行都是一组完整的测试数据直至遇见空行或者下一个数据块
接下来,我们需要对excel文件进行解析,读取出所有的测试数据出来,实现代码如下:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!