- 需要PO模式,对测试代码和和操作代码进行分离
- 需要单例模式,保证每个case 只有一个窗口被打开(在业务只需要一个窗口的情况下),同时方便代码调用
- 配置参数化
- 定位元素参数化
- 用例数据参数化
- 日志
- 报告
- 测试结果推送
1. PO模式:
PageObject首先定义一个BasePage类 用来初始化浏览器,二次封装浏览器操作动作等。接下来,每个页面定义一个类,其中包含元素和基本操作等。然后利用python的继承,重写等特性,将每个页面的逻辑关系联系到一起。最后单独创建测试case文件,编写测试用例即可,此时用例内不包含浏览器操作的具体过程。如果因为页面变更(逻辑不变),只需要修改定位代码即可。反之只需要修改逻辑代码。
2. 单例模式
全局只实例化一次driver 不会因为上下文操作而导致启动多个浏览器,同时方便测试步骤调用
3. 配置参数化(ini)
包含测试环境,定位参数化文件,用例参数化的路径,等待时间,超时时间,日志级别等
4. 定位元素参数化(yml)
将所有的元素定位参数化至文件,形成param:[slelector,content]的格式,通过动态赋值的方式,读取配置文件并应用到用例中
5. 用例数据参数化(yml)
将所有用例参数化至文件 通过pytest 注入到case中
6. 日志
通过二次封装logging 将logging的stream初始化两个 一个负责对命令行输出展示,日志等级根据配置文件调整,另一个负责写入文件,日志等级设置为debug。日志封装后应该提供接口返回日志路径供后期查阅
7. 报告
使用allure或者HTMLTestRunner.py进行测试报告输出
8. 测试结果推送
设置通过email或者企业微信等方式 将测试结果进行推送