目录
提供灵活的运行方式,如按功能模块运行、按脚本运行、按用例等级运行等等
框架需求及实现方案
框架是为了解决某一特定问题而设计的。在搭建测试框架前,我们要清楚我们的需求以及设计目标。然后才能根据需求来选择实现方案。
框架需求
假设我们要设计一款,支持接口自动化、Web UI自动化及App自动化的全栈自动化测试框架,我们的需求如下:
- 支持接口自动化、Web UI自动化及App自动化
- 可以批量运行用例并生成测试报告;
- 测试完成发送邮件;
- 提供灵活的运行方式,如按功能模块运行、按脚本运行、按用例等级运行等等;
- 提供运行日志方便定位问题;
- 支持切换环境;
- 支持数据库断言;
- 减少维护成本;
- 增加运行的稳定性;
- 提高运行效率。
这些是测试框架常见的需求,另外还包括,灵活的实用方式,如配置分类,数据分类,尽量设计的易用和清晰,支持持续集成等等。我们可以根据这些需求,结合Pytest框架来选择实现方案。
实现方案
由于Pytest非常灵活且生态丰富,我们使用Pytest作为基础框架来实现这些需求,针对以上每个需求,我们的简单实现方案如下:
支持接口自动化、Web UI自动化及App自动化#
我们通过封装requests、selenium、appium-python-client库来为框架提供操作HTTP接口、Web浏览器以及App的方法。
在用例目录中使用api_test、web_test、app_test对接口自动化用例、Web UIz i动画用例及App UI自动化用例进行分别管理。
安装方法:
$ pip3 install requests selenium appium-python-client
可以批量运行用例并生成测试报告
按Pytest用例格式编写测试用例函数或类,我们便可以在命令行使用pytest命令批量选择用例执行。
生成测试报告我们可以使用Pytest三方插件pytest-html或allure-pytest,pytest-html测试报告简单方便,allure-pytest生成的测试报告绚丽多彩,这里选择使用allure-pytest作为测试报告生成工具。同时还需要下载allure-commandline工具来将测试数据转为测试报告网站。
安装方法:
$ pip3 install allure-pytest
命令行工具下载链接:
测试完成发送邮件
由于Allure生成的测试报告是一个文件夹,我们需要将报告压缩后发送,压缩可以使用Python自带的zipfile模块,发送邮件可以使用Python自带的email模块来组装邮件消息所需的MIME格式,然后使用smtplib连接自己邮箱的SMTP服务来发送。相应的模块需要我们自己封装。
如何在Pytest执行用例完成后自动发送邮件?