接口自动化测试(集成测试 & 灰盒测试)
实现方式:
1. postman软件
2. 代码
编程语言: python
测试框架 : pytest
接口请求: request
接口测试学什么?
接口测试用例设计
**工具**实现接口测试
**代码**实现接口测试
1.http协议
1.1 http常见请求方法
请求:请求行 请求头 请求体
响应: 状态行 响应头 响应体
1.2 常见响应状态码
1 指示信息
2 请求成功
3 重定向
4 客户端错误
5 服务端错误
2.RESTful
-
拿到一个接口项目之后,先测试业务接口还是先测试单个接口?
先测试业务接口
-
如何测试业务接口?
根据业务流程图梳理业务路径 设计测试用例覆盖每一条业务路径
-
如何进行接口文档解析?
① 分析接口之间的依赖关系 ② 分析接口请求(如:URL、请求方法、请求头、请求参数类型、请求参数等) ③ 分析接口响应(如:响应状态码、响应数据等)
如何使用Postman发送请求并查看响应结果?
设置请求方法
设置URL
设置请求头
设置请求数据
点击send发送数据
查看响应状态码
查看响应体数据
Postman自动关联解决了什么技术问题?
接口之间需要自动传递数据。
pm.responed.json()
pm.environment.set()
{{变量名}}
Postman如何提交multipart/form-data请求数据 ?
① 设置请求方法
② 设置URL
③ 设置请求头
④ 设置请求数据 【body --- form-data---- file选择上传文件】
⑤ 点击Send发送请求
⑥ 查看响应状态码 传智教育-黑马程序员
⑦ 查看响应体数据
Postman如何实现批量执行用例 ?
① 点击测试集中的“Run”按钮,批量运行测试用例
② 弹出Collection Runner窗口,点击运行按钮
③ 查看测试结果
如何针对单个接口设计测试用例?
正向:全部参数 必填参数
逆向: 空 类型错误 长度错误 规则不符
断言的作用:
工具代替人工自动判断预期结果与实际结果是否一致
postman常见的断言方式:
响应状态码断言
包含断言
json数据断言
什么时候开展接口自动化测试?
ü 开发提测前,优先开展接口自动化测试;
ü 开发提测后,优先开展系统测试、后开展接口自动化测试。
如何开展接口自动化测试?
① 选取自动化测试用例
② 搭建自动化测试环境
③ 搭建自动化测试框架
④ 代码实现自动化
⑤ 输出测试报告
⑥ 实现持续集
接口自动化框架
api ----封装接口信息
script------存放测试脚本
data----存放测试数据
report-----存放测试报告
common-----存放通用工具类
congfig.py-----配置文件 维护项目相关的基本信息,如:URL、项目路径等
pytest.inf-----pytest配置文件信息
如何使用requests发送GET/POST/PUT/DELETE请求?
request.请求方法(url)
request提交json headers数据
requset.请求方法(url, json)
requests.请求方法(url, headers)
Response对象常见方法有哪些?
response.status_code
response.json()
response.test
接口对象封装思想?
代码分层
接口对象层(接口封装调用)
测试脚本层 (测试业务 数据准备, 断言处理)
代码中如何解决接口之间的数据依赖?
使用python中的变量或属性传递接口依赖数据
```python
TestContractBusiness.token = res_l.json().get("token")
```
Requests中如何处理multipart/form-data 请求数据?
python常见的断言方式
包含断言 assert testdata == "...."
相等断言 assert "..." in testdata
数据驱动
定义:
测试数据驱动脚本
从脚本转向测试数据
好处:增强代码的可维护性
如何用parametrize实现数据驱动
@pytest.mark.parametrize()
allure生成在线测试报告
修改pytest.ini配置文件
[pytest]
addopts = -s --alluredir report
testpaths = ./scripts
python_files = test*.py
python_classes = Test*
python_functions = test*
运行pytest命令产生测试结果文件(json文件)
pytest
运行allure生成命令测试报告
allure server report