
1、前言
在API开发过程中,手动测试往往如同“大海捞针”—不仅要耗费大量时间编写测试用例,还容易遗漏边缘场景,最终导致用户遇到诸如注册表单崩溃、购物车接收无效数据等问题。而Schemathesis的出现,彻底改变了这一现状。这款工具能从OpenAPI或GraphQL schema中自动生成数千条测试用例,精准定位那些让API“破防”的边缘情况,帮助开发/测试在用户发现问题前,把漏洞扼杀在摇篮里。
2、简介
Schemathesis是一款能帮助开发/测试人员在用户发现前捕捉API漏洞的工具,它可从OpenAPI或GraphQL schema自动生成数千个测试用例,找出破坏API的边缘情况,如注册表单因合法国际姓名崩溃、购物车接收负数量等问题;其具有即时见效(典型API首次测试可发现5-15个真实漏洞)、1分钟快速设置、零维护(自动测试新增端点)的优势,还能与现有工具(支持JUnit、HAR等导出格式)、文档结合,并提供灵活Python API(可直接集成 pytest)。
核心功能:
核心优势:
官方网址:
https://schemathesis.readthedocs.io/
3、快速上手
1、命令行方式
uv pip install schemathesis
schemathesis run https://your-api.com/openapi.json测试官方示例API:


使用uv工具执行测试,命令为uvx schemathesis run
(1)带认证的API测试
当测试的API需要身份验证时,需在命令中添加认证头信息,完整命令为:
uvx schemathesis run https://your-api.com/openapi.json --header 'Authorization: Bearer your-token'其中your-token需替换为实际的认证令牌。
(2)本地开发环境API测试
若API处于本地开发阶段(如运行在本地服务器),需指定本地schema文件路径和本地API 地址,命令为:
uvx schemathesis run ./openapi.yaml --url http://localhost:8000./openapi.yaml:本地API的schema文件路径。
http://localhost:8000:本地API的访问地址。
2、Python测试代码
Schemathesis与pytest测试框架结合,编写自动化测试脚本,步骤如下:
(1)导入Schemathesis库:import schemathesis
(2)加载API schema:
schema = schemathesis.openapi.from_url("https://your-api.com/openapi.json")(也可加载本地schema文件)
(3)定义测试函数:使用@schema.parametrize()装饰器修饰测试函数,函数内调用case.call_and_validate()自动调用API并验证响应,代码示例:
import schemathesis
schema = schemathesis.openapi.from_url("https://your-api.com/openapi.json")
@schema.parametrize()
def test_api(case):
# 自动调用API并验证响应
case.call_and_validate()3、CI/CD集成
- uses: schemathesis/action@v2
with:
schema: "https://your-api.com/openapi.json"本文分享自 AllTests软件测试 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!