如今,我们每个人都通过开发或使用这样的服务来面对REST API。 此外,我们正处于微服务的流行时代,在此时代,我们将业务逻辑拆分为彼此独立的小型独立服务。 通常,这些服务遵循RESTful原则,并使用JSON格式进行通信,由于其简单性,该格式已成为使用最广泛的格式。
pyhttptest-用于通过RESTful API进行HTTP测试的命令行工具
该工具只需三个简单的步骤即可自动执行测试。
1.安装套件
2.以文件中最简单且广泛使用的JSON格式描述针对API服务的HTTP Requests测试用例。
单个测试用例定义示例
- 创建一个JSON文件,例如data / test_server_status.json
{"name" : "TEST: Get server status" ,"verb" : "GET" ,"endpoint" : "/get" ,"host" : "https://httpbin.org" ,"headers" : {"Accept-Language" : "en-US"}
}
- 发送HTTP POST请求
- 创建一个JSON文件,例如data / test_create_html_bin.json
{"name" : "TEST: Create an HTML bin" ,"verb" : "POST" ,"endpoint" : "post" ,"host" : "https://httpbin.org" ,"payload" : {"content" : "Hello, world!"}
}
多个测试用例定义示例
- 创建一个JSON文件,例如data / requests.json
[{"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" : "admin@pyhttptest.com"}},{"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/"}
]
3.运行命令并获取报告
pyhttptest execute data/test_server_status.json
单个测试用例的报告
pyhttptest execute data/requests.json
来自多个测试案例的报告
属性,您可以将其传递给。 json
文件是:
- name-测试用例的名称。
- 动词-HTTP方法。
- 端点-您要在服务器上调用的资源。
- host-服务器主机地址。
- 标头-HTTP标头。 支持所有HTTP标头字段 。
- query_string-问号后的URL中的查询字符串参数。
- 有效负载-数据。
最佳实践
您可能会想到一个问题,即如何在我的现有/新项目中添加,组织和组织测试用例。 每个有测试的Python项目在他的项目目录中都包含一个名为tests/
的文件夹。
按照惯例,从该目录中可以找到很棒的框架,例如unittest
和pytest
,它们可以在Python脚本中发现并执行定义的测试用例。 为了不弄乱这些测试并破坏约定,我建议在项目根目录中创建一个名为live_tests/
的新目录。
在新目录中,您可以放入all。 具有已定义API测试用例的json
文件。 这样,您的测试将很容易区分。 但这完全取决于您!
From: https://hackernoon.com/testing-rest-apis-easily-in-python-with-pyhttptest-1d2x328d