接口自动化测试实战指南
接口自动化测试精品课课件
第1章:接口测试
1.1 接口的概念
- 程序内部接口:模块之间交互的接口,如登录模块与发帖模块。
- 系统对外接口:从外部系统获取数据的接口,如调用第三方API。
常见接口类型:HTTP API、RPC等。
1.2 接口测试
1.2.1 概念
接口测试是测试系统组件间接口的一种测试,重点检查数据交换、传递和控制过程。
1.2.2 接口组成
接口文档通常包含:
- 接口说明
- 调用URL
- 请求方法(GET/POST)
- 请求参数与说明
- 返回参数说明
示例接口文档:微信开放平台
1.3 接口测试的重要性
- 发现前端无法发现的Bug
- 检查系统异常处理能力
- 提升系统安全性与稳定性
- 前端变动不影响后端接口
1.4 如何执行接口测试
1.4.1 接口用例编写
| 测试类型 | 示例用例 |
|---|---|
| 通过性验证 | 传入正常参数,返回200状态码 |
| 参数组合 | 修改商品时传不同参数组合 |
| 接口安全 | 绕过价格验证、身份授权等 |
| 异常验证 | 参数缺失、类型错误、长度超限 |
1.4.2 结合业务逻辑设计用例
例如:
- 登录失败5次后锁定15分钟
- 新用户需过实习期才能发帖
- 删除帖子扣积分
第2章:接口自动化测试
2.1 概念
通过脚本自动测试接口,提升测试效率和准确性。
2.2 接口自动化流程
- 需求分析
- 挑选接口(核心、高频、易错)
- 设计测试用例
- 搭建测试环境
- 设计测试框架
- 编写代码
- 执行用例
- 生成测试报告
2.3 第一个接口自动化示例
import requests
r = requests.get("https://www.baidu.com")
print(r) # 输出:<Response [200]>
2.4 Requests模块
安装
pip install requests==2.31.0
常用方法
r = requests.get(url)
r.status_code # 状态码
r.json() # 解析JSON响应
r.text # 文本响应
发送请求示例
import requests# GET请求
r = requests.get("https://www.baidu.com")# POST请求
data = {"username": "zhangsan", "password": "123456"}
r = requests.post("http://xxx.com/login", data=data)
2.5 Pytest框架
安装
pip install pytest==8.3.2
用例命名规则
- 文件名:
test_*.py或*_test.py - 类名:
Test* - 方法名:
test_*
运行命令
pytest -v -s # 详细输出
pytest test_login.py # 指定文件
pytest -k "login" # 按关键字运行
配置文件 pytest.ini
[pytest]
addopts = -vs
testpaths = ./cases
python_files = test_*.py
python_classes = Test*
断言
assert response.status_code == 200
assert response.json()["code"] == "SUCCESS"
参数化
@pytest.mark.parametrize("input,expected", [("3+5", 8), ("2+4", 6)])
def test_eval(input, expected):assert eval(input) == expected
Fixture(夹具)
@pytest.fixture
def login():print("执行登录")yieldprint("清理数据")def test_list(login):print("访问列表页")
2.6 YAML配置文件
安装
pip install PyYAML==6.0.1
读写示例
import yamldef write_yaml(filename, data):with open(filename, "a", encoding="utf-8") as f:yaml.safe_dump(data, f)def read_yaml(filename, key):with open(filename, "r", encoding="utf-8") as f:return yaml.safe_load(f)[key]
2.7 JSON Schema校验
安装
pip install jsonschema==4.23.0
使用示例
from jsonschema import validateschema = {"type": "object","properties": {"code": {"type": "string"},"data": {"type": "array"}}
}validate(response.json(), schema)
2.8 Logging日志模块
import logginglogging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)logger.info("这是一条信息日志")
logger.error("这是一条错误日志")
2.9 Allure测试报告
安装
pip install allure-pytest==2.13.5
生成报告
pytest --alluredir=./allure-results
allure serve ./allure-results
第3章:项目实战
3.1 需求分析
理解业务逻辑,明确接口功能和依赖关系。
3.2 挑选接口
- 登录接口
- 博客列表/详情接口
- 用户信息接口
3.3 设计测试用例
- 正向用例:正常登录、获取列表
- 反向用例:错误账号、空参数、越权访问
3.4 项目结构
autotest_interface/
├── cases/ # 测试用例
├── data/ # 测试数据
├── utils/ # 工具类
├── logs/ # 日志文件
├── pytest.ini # 配置文件
3.5 封装工具类
请求封装
class Request:def get(self, url, **kwargs):return requests.get(url, **kwargs)def post(self, url, **kwargs):return requests.post(url, **kwargs)
日志封装
class Logger:@classmethoddef get_log(cls):logger = logging.getLogger(__name__)# 配置handler和formatterreturn logger
总结
本博客从接口测试基础讲起,逐步深入到接口自动化测试的框架搭建、用例编写、报告生成等实战内容,适合初学者系统学习。
