Schemathesis - 自动生成测试用例,捕捉API漏洞

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


1、前言

在API开发过程中,手动测试往往如同“大海捞针”—不仅要耗费大量时间编写测试用例,还容易遗漏边缘场景,最终导致用户遇到诸如注册表单崩溃、购物车接收无效数据等问题。而Schemathesis的出现,彻底改变了这一现状。这款工具能从OpenAPI或GraphQL schema中自动生成数千条测试用例,精准定位那些让API“破防”的边缘情况,帮助开发/测试在用户发现问题前,把漏洞扼杀在摇篮里。

2、简介

Schemathesis是一款能帮助开发/测试人员在用户发现前捕捉API漏洞的工具,它可从OpenAPI或GraphQL schema自动生成数千个测试用例,找出破坏API的边缘情况,如注册表单因合法国际姓名崩溃、购物车接收负数量等问题;其具有即时见效(典型API首次测试可发现5-15个真实漏洞)、1分钟快速设置、零维护(自动测试新增端点)的优势,还能与现有工具(支持JUnit、HAR等导出格式)、文档结合,并提供灵活Python API(可直接集成 pytest)。

核心功能:

  • 自动生成测试用例,检测API中的500错误、schema违规、验证绕过和集成失败等问题。

  • 支持命令行、Python测试代码和CI/CD集成等多种使用方式。

  • 可用于OpenAPI和GraphQL两种API规范的测试。

核心优势:

  • 边界情况发现:能识别并测试可能导致API故障的意外输入,突破API正常运行的预期边界。

  • 零测试维护:测试用例可随API schema的更新自动适配,无需开发者手动修改测试代码。

  • 防止回归问题:通过对API契约(schema定义的接口规则)进行测试,避免后续迭代中原有功能出现故障。

  • 规范一致性验证:校验API的实际实现与文档(schema所定义的规范)是否一致,确保文档准确性。

官方网址:

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"

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值