基于JSON的API测试 - Medium
基于 JSON 的 API 测试
**API 测试框架,允许用户通过 JSON 文件组织测试用例,执行测试,并将自动化测试集成到 API 测试流程中。
为什么选择 api-jsontest?
在终端测试 API 时,很多人会首先想到 curl 工具。尽管 curl 功能强大,但在处理复杂的有效载荷或频繁修改测试数据时,其操作会变得繁琐,尤其是在使用 Cloud9 等工具测试私有 API 时。api-jsontest 的出现,正是为了解决这些问题。
安装与验证
通过以下命令安装 api-jsontest:
$ neneneba 卷曲
安装完成后,运行以下命令验证安装是否成功:
$ api-test --version
api-test version 0.3.0
如果看到上述版本信息,说明安装成功。
基本原理与测试用例结构
api-jsontest 的核心理念是通过 JSON 文件定义 API 测试用例,并对其执行测试。测试文件包含以下两个主要组件:
- testCases:存储所有测试用例信息,每个测试用例通过唯一键标识。
- url:API 端点的基础 URL。
此外,根级别的 header 属性可以存储常见的请求头(如授权信息、内容类型等),并在所有测试用例中自动注入。用户也可以在单个测试用例中指定特定的请求头。
测试用例支持以下属性:
path:API 路径。body:请求体。header:请求头。query:查询参数。method:HTTP 方法。
运行测试用例
使用 run 命令可以调用 API 测试用例。以下是运行单个测试用例的示例:
api-test -f test.json run get_api
运行结果将输出测试的响应信息。
测试错误响应
尝试运行返回 4xx 错误的测试用例:
api-test -f test.json run invalid_post_api
同时运行多个测试用例
支持同时运行多个测试用例,或运行所有测试用例:
api-test -f test.json run get_api post_api
# 或
api-test -f test.json run all
如果需要查看响应头信息,可以添加 -i 参数。更多用法可通过以下命令查看:
api-test -f test.json run --help
自动化测试与比较方式
api-jsontest 支持在响应头和响应体上进行以下五种基本比较:
- 完全相等:响应与预期值完全一致。
- 子集匹配:预期值是响应的子集。
- 键存在:JSON 响应中包含指定键。
- 路径值相等:通过 JSON 路径访问的嵌套对象值与预期值相等。
- 路径值包含:通过 JSON 路径访问的嵌套对象值包含预期值。
示例:定义测试用例
测试用例中的 expect 属性用于定义测试条件,可同时对响应头和响应体进行检查。例如:
- 在
get_api的响应体中,包含属性author且值为Aneeta Sharma,可通过contains检查子集匹配。 - 对于动态值,可以使用
hasKey检查键是否存在。 - 对于静态响应(如错误响应),可使用
eq进行完全相等检查。
此外,path_eq 和 path_contains 支持对 JSON 对象的任意深度进行比较。更多信息请参考 官方文档。
执行测试
使用 test 命令运行测试用例:
api-test -f test.json test get_api
# 或运行所有测试用例
api-test -f test.json test all
验证测试有效性
通过修改测试条件,可以验证测试的正确性。例如,修改 invalid_post_api 的 eq 检查条件:
"eq": { "message": "Bo ok already exists." }
运行测试后,若测试失败,则说明之前的测试条件是有效的。
自定义测试逻辑
如果内置的检查方式无法满足需求,api-jsontest 提供了通过脚本或程序自定义检查的功能。用户可在 expect 块的 external 属性中指定可执行文件。例如,使用 Node.js 编写比较逻辑:
// 自定义比较逻辑
程序应以退出码 0 表示成功,退出码大于 0 表示失败。
集成与环境适配
开发完成后,可以通过修改测试文件中的变量,将自动化测试应用于预发布或生产环境。需要注意的是,避免对关键数据执行更新或创建操作。
此外,api-jsontest 支持与 CI 流程集成。当所有测试通过时,程序以退出码 0 结束;若有测试失败,则以退出码 1 结束。
总结
如果您需要测试私有 API 或只能通过终端访问 API,api-jsontest 是一款理想的工具。它支持通过 JSON 文件组织测试用例,编写自动化测试,并在不同环境中重复运行相同的测试用例。通过简化从开发到生产的测试流程,api-jsontest 大大提升了测试效率,减少了手动检查的工作量。
原文链接: https://medium.com/@abhishekit00/json-based-api-testing-517536c37e75
最新文章
- 从2024年三个API趋势中学习,塑造新的一年
- 通过Fetch和Axios在React中使REST API
- 企业如何合法使用三方数据、自有的用户数据?
- 如何在 Python 和 Flask 中使用 IP API 查找地理位置?
- 什么是API方法?
- 玩转色彩世界:The Color API的魔法调色板
- 11 种最佳营养和食品 API 解决方案
- JSON Schema:自定义API响应以提升用户体验
- JavaScript中的Temporal Date API非常优秀,原因如下:- Apidog
- 使用PyCharm调用API指南
- GraphQL vs. REST APIs:为何不应使用GraphQL
- API安全性的最佳实践:全面指南!