主要思路:
- 对 requests 进行二次封装,做到定制化效果
- 使用 excel 存放接口请求数据,作为数据驱动
- 里面有一些功能模仿了 jmeter,比如用户参数定义、jsonpath 提取
- 用 pytest 进行测试用例管理
一、环境
- python==3.8.0
- requests==2.31.0
- pytest==7.4
- 还有一些其他第三方库例如 allure 报告、jsonpath 等
这块不过多介绍,安装 python 配置环境变量,pip install 命令安装所需插件即可
二、项目目录结构
1、config用来存放项目配置文件,包括接口基础配置,数据库信息等,使用的是 configparser 进行读取
2、Outputs 层存放了日志和测试报告,这里报告用的是 allure
3、resources 存放的是测试数据 (这里用的 excel 作为接口数据驱动) 以及其他的一些测试文件等
4、Testcases 存放测试类
5、utils:工具类,包含了读取配置、记录日志、http 请求、接口数据处理等功能
三、重点功能介绍
1、读取 excel
实现代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
数据文档格式:
(这里目前只支持单 sheet 页读取,后续将扩展成 sheet 名称传参获取方式)
2、requests 请求部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
|
在这里我根据项目情况,进行了请求头的特殊处理;
- 实例化对象的时候添加了全局请求头
- 根据不同类型的请求和传参格式对 content-type 做了相应处理
- token 的处理
- 最后请求后把当前无用请求头部分做了清理
3、接口数据处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
这里主要做了几点处理:
- 将请求头部分做了参数化替换并进行了数据格式转换,转为字典格式
- 请求 body 进行参数化,并根据请求方式和 content-type 做了相应处理
- 用户参数处理,用 jsonpath 获取响应信息字段值存放到测试类属性中
- 预期结果断言处理(这里统一用的自带的 assert 方法,还没进行二次封装)
- 将更新后的 data 发送请求
4、测试类,测试方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
这里测试类继承了上面的 DataHandle 类,测试方法中可以调用父类方法进行测试数据的处理 params_list 是用字典存放的参数化的数据,我这里是通过正则替换把请求参数里面的需要被替换的部分找到 params_list 里的 key,将 value 进行替换
5、runner 执行测试用例
1 2 3 |
|
调用 pytest 的 main 方法进行命令行参数执行,添加了 allure 生成测试报告
6、测试报告展示
7、未完成功能
- excel 读取:现在只支持当前 sheet 页读取,后续扩展成传 sheet 名称指定获取
- 数据库断言:excel 添加一列存放 sql 语句,发送接口请求后查询数据库,将这部分加进断言里
- http_requests 目前只有 get 和 post 方法,后续将其他方法也封装进去
- 断言方式:目前没有对断言封装,用的自带的 assert 函数,后面可以进行二次封装或用第三方库实现
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】