
pytestrequests 接口自动化测试实战REST API 全方法覆盖与用例设计接口测试是后端质量保障的第一道防线UI 还没做的时候它就能跑回归的时候它最先发现破坏。本文用 pytest requests 搭一套可复用的 REST API 自动化框架——GET/POST/PUT/PATCH/DELETE 全方法覆盖、状态码与数据校验、异常路径与响应时间断言19 个用例全绿工程结构可直接搬走复用。一、为什么是 pytest requestspytest 的 fixture 机制天然适合管理 API 会话与测试数据的生命周期requests 的 Session 对象自动管理 Cookie 与连接池登录态用例不用重复造轮子断言失败时自动输出完整响应体排查不用再手动 curl 复现生态齐全allure 报告、pytest-xdist 并行、重试插件随装随用。二、框架结构api-test-kit/ ├── tests/ │ ├── conftest.py # fixturebase_url / session / 动态数据 │ └── test_api.py # 19 个测试用例 └── report/ # 测试报告输出conftest.py 里两个核心夹具pytest.fixture(scopesession)defsession(base_url):srequests.Session()s.headers.update({Content-Type:application/json})yields s.close()pytest.fixturedefcreated_post_id(session):创建测试数据用完自动清理respsession.post(f{BASE}/posts,jsonpayload)yieldresp.json()[id]session.delete(f{BASE}/posts/{resp.json()[id]})三、全方法用例设计方法用例目标断言点GET列表详情状态码/字段类型POST创建资源201/回读字段PUT/PATCH全量/局部更新修改后值生效DELETE删除复删204/404 异常路径设计原则每个正常路径配一条异常路径。POST 缺字段断言 400DELETE 不存在的 ID 断言 404PUT 非法类型断言 422——异常路径才是接口质量的重灾区。四、生命周期与响应时间断言整条链路是conftest 起 Session → 夹具创建测试数据 → 用例执行断言 → teardown 清理。响应时间断言挂在关键接口上防止性能劣化deftest_get_list_latency(session):starttime.perf_counter()rsession.get(f{BASE}/posts)assertr.status_code200asserttime.perf_counter()-start1.0# 秒级兜底阈值跑法pytest -v输出 19 passed接入 CI 时加--junitxmlreport/result.xml出报告。这套骨架在真实项目里扩展的方式只有一种——往 test_api.py 里加用例框架本身不再动。 本文对应的完整测试工程conftest19 用例报告目录已整理上传点击查看资源包