仅用作个人了解记录!
1. 接口测试基础
接口定义 HTTP协议 接口规范
接口测试流程 API文档解读 接口用例设计
1.1 URL
URL = 协议 + 服务器地址 + 端口号 + 资源路径 + 参数
1.2 HTTP协议
- HTTP协议组成:
- 请求: 行,头,体
- 响应: 状态行,响应头,响应体
- 常见请求方法 : 查询GET 新增POST 修改PUT 删除DELETE
- 常见响应状态码
- 2XX : 请求成功,如200 201 204==
- 4XX : 客户端错误,如400 401 403 404==
- 5XX : 服务端错误,如500 503==
1.3 接口规范
分类 | 传统风格 | RESTful |
---|---|---|
请求方法 | 主要使用Post Get方法 | 遵循HTTP协议方法定义 |
URL | 定义资源和操作混合 | 仅定义一个资源,不包含对资源的操作 |
状态码 | 均是200 | 遵循HTTP协议状态码定义 |
- 传统接口风格
- Restful
2. 工具实现接口测试
Postman 接口调试 断言 自动关联
- 拿到接口项目,先测试业务接口,然后再考虑单个接口
- 如何测试业务接口
- 根据业务流程图梳理业务路径
- 设计测试用例覆盖每一条业务路径
- 如何解析接口文档
- 分析接口间依赖关系
- 分析接口请求(比如 : URL 请求方法 请求头 请求参数类型 请求参数==)
- 分析接口响应 (比如 : 响应状态码 响应数据==)
举例: 提取测试点 --> 找业务路径
解析接口文档
测试用例设计
编写测试用例
POSTMAN介绍
下载地址 : https://www.getpostman.com/ postman下载链接地址
如何使用postman发请求并看响应结果
设置请求方法 -> 设置URL -> 设置请求头 -> 设置请求数据 -> 点Send发请求->看响应状态码 -> 看响应体数据
如何使用postman发请求 multipart/form-data 并看响应结果
设置请求方法 -> 设置URL -> 设置请求头 -> 设置请求数据**[body->form-data->file选择上传文件] **-> 点Send发请求->看响应状态码 -> 看响应体数据
POSTMAN自动关联数据
Postman自动关联解决了** 接口间需要自动传递数据;**
Postman自动关联实现思路:
①提取关联数据 pm.response.json()
②保存关联数据 pm.environment.set()
③引用关联数据 {
{变量名}}
举例
Postman 如何提交查询参数
- 设置在URL
- 设置Params区域
批量执行
通过运行测试集的方式批量运行测试用例
- 点击测试集中的"run"按钮,批量运行测试用例
- 弹出Collection Runner窗口,点击运行按钮
- 查看测试结果
单接口测试
正向 : 必填参数 全部参数
逆向 : 空 类型错误 长度错误 规则不符
提取测试点
测试用例
postman进行接口测试
Postman断言
断言作用 : 让工具代替人工自动判断预期结果和实际结果是否一致
常见断言方式有 :
- 响应状态码
- 包含字符串
- JSON数据断言
Postman参数化
场景: 测试脚本仅测试数据不一样,使用参数化提高脚本复用
步骤:
如何实现参数化
- 准备数据文件
- 引用数据文件
- 请求参数获取 { {变量名}}
- 代码中获取 data.变量名
3. 代码实现接口自动化测试
Pyhton Requests Pytest Allure 和接口测试框架
接口自动化测试
接口自动化 : 使用工具或代码代替人对接口进行测试的技术
测试目的 : 防止开发修改代码时候引入新问题
测试时机 :
- 开发进行系统测试 转测前, 可先进行接口自动化脚本编写;
- 开发进行系统测试 转测后, 优先进行系统测试用例执行,再进行接口自动化脚本编写(为后续回归测做准备)
接口自动化框架
项目目录结构
Requests库
python 中的"浏览器",基于urllib的HTTP库
// 安装
pip3 install requests
// 验证
pip3 show requests
//操作步骤
// 1 导包
// 2 发送接口请求
// 3 查看响应数据
// 需求 登录
//导包
import requests
//发送请求
url = "http://test.itkaka.net/api/login"
header_data = {
"Content-Type":"application/json"}
login_data = {
"uname" : "admin",
"pwd":"admin123",
"code":2,
"uuid":"xxx"
}
response = requests.post(url=url,headers= header_data,json=login_data)
//查看响应
print(response.status_code)
print(response.json())
封装接口对象层
// 接口封装时,重点是依据接口文档封装接口信息,需使用的测试数据是从测试用例传递,接口
//方法被调用时需要返回对应的响应结果
// 导包
import requests
//创建接口类
class LoginAPI:
// 初始化
def _ _ init _ _(self):
// 指定url基本信息
self.url_verify = ""
self.url_login=""
//验证码
def get_verify_code(self):
return requests.get(url=self.url_verify)
// 登录
def login(self,test_data):
return requests.post(url=self.url_login,json=test_data)
封装接口测试脚本层
测试数据准备,断言以及业务处理==
项目配置文件
:::info
接口自动化框架中配置文件的主要作用是 : 维护项目相关基本信息,比如URL和项目路径=
:::
Allure报告
官方帮助文档 : https://docs.qameta.io/allure
// 生成测试结果文件
//安装
pip install allure-pytest
// 使用 allure 生成测试报告的步骤
// 1. 修改 pytest.ini 配置文件
[pytest]
addopts = s --alluredir report
testpaths = ./scripts
python_files = test*.py
python_classes = Test*
python_functions = Test*
// 2. 运行pytest 命令产生测试结果文件(json文件)
pytest
// 3. 运行allure 命令生成测试报告
allure serve report
持续集成 CI/CD(待补充)
Jenkins Git GitHub
进阶(待补充)
PyMysql操作数据库
Mock测试 接口加密解密测试