2021.1.31企业接口自动化实战
一、mock和接口测试的区别
共同点都是截获了数据,不同点是mock相当于服务端,用户测客户端; 接口测试相当于站在客户端,测试服务端
二、理论知识
1. 什么是接口( restful api )测试
在客户端角度,向服务端发送数据,对回收的数据进行判断。
2. 为什么要学接口测试
单元测试:pytest, python -> 直接对代码进行测试(可以直观有效的反馈错误,代价最小)
- 接口测试:requests -> 对服务器发送请求 (直接与服务器进行交互,代价中)
- UI测试:selenium, appium -> 对存在 UI 界面的应用进行测试(以用户视角进行测试,代价最大)
3. restful 结构
接口格式的规则
Roy_Fielding:https://en.wikipedia.org/wiki/Roy_Fielding 1
论文:https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm 2
GET:获取资源. 参数信息放到请求头
POST:新建/更新资源. 参数信息放到请求体
PUT:更新资源
DELETE:删除资源
三、企业微信项目实战
注意代码中/和//除法:python中的/,C语言中的//是取整数
1. 实现目标:
- 接口测试数据
- 接口测试提速
- 接口封装
2.测试数据
2.1数据生成:如何生成有价值数据
指标形数据:(天线,射频信号 -> nv 值 ,波段 )
1
[-5 ~ -1] 信号差 [0 ~ 5 ] 信号中 [5~10] 信号好
- 边界值:七点法
- 笛卡尔积
2.2 数据清洗:如何清洗无用数据
- 当前接口受到脏数据影响,干扰正常功能。在测试前需要进行脏数据清洗。
- 以企业微信为例:当使用重复手机号
注意:在测试后进行清理,不是测试前
清理方法:
- 创建方法(成员添加,端口占用,多进程 id ,文件残留,文件篡改恢复):在 teardown 进行销毁
- 删除方法(删除文件,删除成员…):备份及恢复或伪数据
2.3 如何查看并调试接口
利用 charles 的代理功能,实现接口的错误诊断
注意:如果是 https ,要注意证书问题,设置 verify=False 取消证书验证
3. 接口测试提速
3.1 考虑并行插件xdist
pytest-dev/pytest-xdist
pytest plugin for distributed testing and loop-on-failures testing modes. - pytest-dev/pytest-xdist
在用例后加入 -n auto,会根据 CPU 数(CPU逻辑数)进行并行。
这里只对查询成员的用例进行并行测试,其他增删改不能并行,业务有冲突:所以只对此文件的查询用例test_get_member上加-n auto
注意:并行用例设计不要冲突,比如以下情况:
- 并行用例中存在数据相同(随机数:时间种子)
- 并行用例端口相同
- 并行用例本地的文件相同:进程锁
如何自行设计并行套件,可参考 pytest 的 hook:pytest_collection_modifyitems
3.2 使用 session
- session 原理
- session 保活提速
- session 应用:免 token 登陆,token放在session里,一次登陆,保持会话,一直使用,直至失效
注意:调试代码时,如果报错SSL证书错误,则是因为开启了代理:因为charles等代理工具打开时,电脑的设置默认会自动打开代理,这样就代码接口请求报错
此时:设置--》网络与internet--》代理--》使用代理服务器:关
3. 接口封装
- 封装基础 base 类
- 封装接口测试业务类
封装的page里放各种动作:session、requests、get、post等
而用例里只是调用page类,并传具体值
token放在session里,其他的参数放在params里(get)或json里(post)
字典的update用法
try,finally用法