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] 信号好

  1. 边界值:七点法

 

 

  1. 笛卡尔积

image

2.2 数据清洗:如何清洗无用数据

  1. 当前接口受到脏数据影响,干扰正常功能。在测试前需要进行脏数据清洗。
  2. 以企业微信为例:当使用重复手机号

注意:在测试后进行清理,不是测试前

清理方法:

  1. 创建方法(成员添加,端口占用,多进程 id ,文件残留,文件篡改恢复):在 teardown 进行销毁
  2. 删除方法(删除文件,删除成员…):备份及恢复或伪数据

2.3 如何查看并调试接口

利用 charles 的代理功能,实现接口的错误诊断

注意:如果是 https ,要注意证书问题,设置 verify=False 取消证书验证

 

 

3. 接口测试提速

3.1 考虑并行插件xdist

GitHub

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

 

 

注意:并行用例设计不要冲突,比如以下情况:

  1. 并行用例中存在数据相同(随机数:时间种子)
  2. 并行用例端口相同
  3. 并行用例本地的文件相同:进程锁

如何自行设计并行套件,可参考 pytest 的 hook:pytest_collection_modifyitems

3.2 使用 session

  1. session 原理
  2. session 保活提速
  3. session 应用:免 token 登陆,token放在session里,一次登陆,保持会话,一直使用,直至失效

注意:调试代码时,如果报错SSL证书错误,则是因为开启了代理:因为charles等代理工具打开时,电脑的设置默认会自动打开代理,这样就代码接口请求报错

此时:设置--》网络与internet--》代理--》使用代理服务器:关

 

3. 接口封装

  1. 封装基础 base 类
  2. 封装接口测试业务类

 封装的page里放各种动作:session、requests、get、post等

 而用例里只是调用page类,并传具体值

 token放在session里,其他的参数放在params里(get)或json里(post)

字典的update用法

 

 try,finally用法

 

 

posted @ 2021-01-28 22:29  方园FPP  阅读(216)  评论(0编辑  收藏  举报