写点什么

pyhttptest 实操指南:测试 RESTful API 的有效方法

作者:Liam
  • 2024-05-21
    广东
  • 本文字数:1384 字

    阅读完需:约 5 分钟

pyhttptest 实操指南:测试RESTful API的有效方法

现在,无论是开发还是使用服务,我们每个人都面临着 REST API 的挑战。同时,我们正处于微服务的流行时代,我们将业务逻辑拆分为多个独立的小服务。这些服务大多遵循 RESTful 原则,并使用 JSON 格式进行通信,因为其简单性使其成为最广泛使用的格式。


pyhttptest - 这是一个命令行工具,用于对 RESTful APIs 进行 HTTP 测试。


此工具通过三个简单的步骤实现自动化测试。

1. 安装软件包

pip install pyhttptest
复制代码

2. 描述针对您的 API 服务的 HTTP 请求测试用例

使用简单且广泛使用的 JSON 格式在文件中描述您的 HTTP 请求测试用例。


单个测试用例定义示例


  • 发送一个 HTTP GET 请求

  • 创建一个 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 - 测试用例的名称。

  • verb - HTTP 方法。

  • endpoint - 您想要在服务器上调用的资源。

  • host - 服务器主机地址。

  • headers - HTTP 头部。支持所有 HTTP 头部字段。

  • query_string - URL 问号后的查询字符串参数。

  • payload - 数据。


最佳实践


您可能会问,在我的现有/新项目中如何添加、结构和组织测试用例。每个含有测试的 Python 项目都会在其项目目录中有一个名为tests/的文件夹。


根据惯例,像unittestpytest这样的框架会发现并执行 Python 脚本中定义的测试用例。为了不混淆这些测试并保持惯例,我建议在项目根目录创建一个名为live_tests/的新目录。


在这个新目录中,您可以放入所有定义 API 测试用例的.json文件。这样做可以轻松区分您的测试,但这真的取决于您!

用户头像

Liam

关注

没有一个bug是无辜的! 2021-12-23 加入

一个简单的程序员!

评论

发布
暂无评论
pyhttptest 实操指南:测试RESTful API的有效方法_测试_Liam_InfoQ写作社区