前言
本选型来自于6年前,前公司准备开展自动化时,本人基于当时市面自动化工具以及技术的调研思考结果。
选型指标
-
校验(断言):需要支持对请求状态码、接口返回值等进行校验。
-
数据隔离(测试用例与脚本分离):为了便于维护,需要支持测试用例即具体的请求接口、请求参数、预期返回结果等测试数据与代码分离。这样做的好处比如后续接口调整了请求参数或者需要修改/新增接口用例,就能直接定位并操作,不用再去改代码。而且方便检查接口用例的覆盖程度,交接方便。
-
动态数据:某些入参有唯一性校验,当重复进行接口请求测试时,数据需要支持动态变化。比如手机号、订单号等,约定一个关键字orderid,当识别到入参为orderid时对应生成不同的订单号。
-
数据依赖(接口依赖):一个接口的入参/请求头依赖另外一个接口的返回值,需要支持返回值提取传参。最常见的就是接口请求需要在headers中写入登录接口返回的Token了。
-
操作数据库:进行数据库验证或者构造测试数据
-
数据加/解密:接口可能会对某些敏感数据进行加密操作,当进行返回值校验时需要支持数据加/解密
-
用例执行选择器:自定义配置接口用例是否执行
-
配置文件:需要支持配置文件来控制在不同的环境执行接口自动化测试
-
日志:提供执行情况(执行时间、执行接口、请求方式、请求数据、返回值等关键信息)日志,当用例执行有问题时方便定位。
-
可视化报告:将接口执行情况:用时/失败/成功/报错等展示给需要关注的团队成员
选型结果
考量因素 | Pytest/Unittest+Request+Selenium | |
结论 | 优点:基于python语言,入门门槛低上手快,可扩展性强,面对不同的业务需求具备更高的灵活性和可操作性 缺点:没有现成的可视化管理平台,进行自动化脚本编写需要一定的代码基础 | |
必备功能 | 校验(断言) | 支持 |
数据隔离 | 支持 | |
动态数据 | 支持 | |
数据依赖 | 支持 | |
操作数据库 | 支持 | |
数据加/解密 | 支持 | |
用例执行选择器 | 支持 | |
配置文件 | 支持 | |
日志 | 支持 | |
可视化报告 | 支持。unittest支持 HTMLRunner生成简单的html测试报告,pytest支持 allure生成更详细美观的测试报告 | |
其他考量 | 团队协作 | 暂时没有可视化管理平台,自主开发工作量大。目前普遍做法是直接使用Excel进行用例管理,脚本管理用git/SVN。所以整体而言,需要协作者皆严格执行统一定制的规范,不然当用例/脚本达到一定数量时,不好维护。 |
技术要求 | 可以分成接口用例设计人员与脚本人员两类考量
| |
执行方式 | 可集成到Jenkins定时执行 |