使用 pyhttptest 轻松测试 REST API
- 2020 年 2 月 15 日
- 筆記
现在,我们每个人都面临着 REST API,要么开发这样的服务,要么使用这样的服务。 此外,我们正处于微服务的时尚时代,我们将业务逻辑分割成独立于每个服务的小型独立服务。 这些服务大多遵循 RESTful 原则,并使用 JSON 格式进行通信,由于其简单性,JSON 格式成为最广泛使用的格式。
pyhttptest
命令行工具,用于通过 RESTful api 进行 HTTP 测试。
这个工具通过简单的三个步骤自动化测试
- 安装
pip install pyhttptest
- 用文件中最简单且广泛使用的格式 JSON 描述针对 API 服务的 HTTP 请求测试用例
- 发送 HTTP GET 请求 json文件内容如下
{ "name": "TEST: Get server status", "verb": "GET", "endpoint": "/get", "host": "https://httpbin.org", "headers": { "Accept-Language": "en-US" } }
—
- 发送 HTTP POST 请求 json文件内容如下
{ "name": "TEST: Create an HTML bin", "verb": "POST", "endpoint": "post", "host": "https://httpbin.org", "payload": { "content": "Hello, world!" } }
- 多个测试用例定义示例
[ { "name": "TEST: List all users", "verb": "GET", "endpoint": "api/v1/users", "host": "http://localhost:8085/", "headers": { "Accept-Language": "en-US" }, "query_string": { "limit": 1 } }, { "name": "TEST: Add a new user", "verb": "POST", "endpoint": "api/v1/users", "host": "http://localhost:8085/", "payload": { "username": "pyhttptest", "email": "[email protected]" } }, { "name": "TEST: Modify an existing user", "verb": "PUT", "endpoint": "api/v1/users/XeEsscGqweEttXsgY", "host": "http://localhost:8085/", "payload": { "username": "pyhttptest" } }, { "name": "TEST: Delete an existing user", "verb": "DELETE", "endpoint": "api/v1/users/XeEsscGqweEttXsgY", "host": "http://localhost:8085/" } ]
- 运行命令并获取报告
pyhttptest execute data/filename.json
- 来自测试用例的报告截图

测试用例的属性
- name – 测试用例的名称
- verb – HTTP 方法
- endpoint – 要在服务器上调用的资源
- host – 服务器主机地址
- headers – 一个 HTTP 报头。所有的 HTTP 报头
- query_string – 查询字符串-在问号后面的 URL 中的查询字符串参数
- payload – 数据
Tips
您可能会想到一个问题,如何将测试用例添加、结构和组织到我现有的 / 新的项目中。 每个 Python 项目,其中有测试包含在他的项目目录一个文件夹即tests/。
从这个目录按惯例,伟大的框架,如unittest and 及pytest发现并执行 Python 脚本中定义的测试用例。 为了不搞乱这些测试并打破常规,我建议在您的项目根目录中创建一个名为live_tests/ 。
在新目录中,可以将所有json文件,定义了 API 测试用例的文件。 通过这样做,您的测试将很容易区分。
https://wx2.sinaimg.cn/mw690/6374f516ly1gb288ffq39j206n06r3yx.jpg