跳转到主要内容

BeyondVCR帮助您编写执行HTTP调用的代码测试

项目描述

Beyond VCR

BeyondVCR帮助您编写执行HTTP请求的代码测试

它使用自定义HTTP方法与服务器通信来设置模拟请求、重置模拟或检索记录的请求。

简而言之

  • 小巧轻量级的模拟HTTP服务器

  • 使用自定义HTTP方法(MOCK_GETMOCK_POST等)设置模拟请求

  • 使用自定义HTTP方法MOCK_RESET重置模拟服务器

  • 使用HTTP请求MOCK_RETRIEVE检索发送到服务器的所有记录请求

  • 免费软件:MIT许可协议

使用BeyondVCR

您可以选择使用Docker运行服务器,或者运行Python模块。

运行服务器

选项1:直接运行Python模块

一旦您使用pip install beyondvcr安装了beyondvcr,您可以使用以下命令启动模拟服务器

python -m beyondvcr.server

它将显示类似以下的消息

`在http://0.0.0.0:7777上启动模拟服务器,使用<Ctrl-C>停止`

这意味着服务器已准备好使用。

选项2:使用Docker运行

运行

docker run --rm -p 7777:80 registry.gitlab.com/eliasdorneles/beyondvcr

这将下载Docker镜像并运行它。当您看到类似以下的消息时

http://0.0.0.0:80 上启动模拟服务器,使用 <Ctrl-C> 停止

这意味着服务器已准备好使用。

使用模拟服务器

服务器启动后,您可以向服务器发起调用。

默认情况下,如果我们没有告诉模拟服务器应如何回答,它将以 404 错误和类似这样的响应来回答任何常规 HTTP 请求

$ curl -D - https://:7777/hello
HTTP/1.0 404 Not Found
Server: BaseHTTP/0.6 Python/3.10.4
Date: Mon, 13 Jun 2022 20:18:31 GMT

Mock server got unexpected request:
{
  "path": "/hello",
  "query": "",
  "method": "GET",
  "body": "",
  "headers": {
    "Host": "localhost:7777",
    "User-Agent": "curl/7.81.0",
    "Accept": "*/*"
  }
}
准备固定响应

要设置模拟服务器,使其在您对路径 /hello 进行 GET 请求时发送固定响应,我们将发送类似这样的 MOCK_GET 请求

$ curl -X MOCK_GET -D - https://:7777/hello -d '{"hello": "Elias"}'
HTTP/1.0 200 OK
Server: BaseHTTP/0.6 Python/3.10.4
Date: Mon, 13 Jun 2022 20:32:14 GMT

GET mock recorded

现在,当我们再次进行 GET /hello 请求时,我们将看到我们使用 MOCK_GET 记录的正文

$ curl -D - https://:7777/hello
HTTP/1.0 200 OK
Server: BaseHTTP/0.6 Python/3.10.4
Date: Mon, 13 Jun 2022 20:32:16 GMT

{"hello": "Elias"}
询问服务器有关已发出的请求

模拟服务器在内存中跟踪每个常规 HTTP 请求的信息,直到您将其重置。

您可以使用 MOCK_RETRIEVE 自定义 HTTP 方法来要求服务器发送关于这些请求的信息

$ curl -s -X MOCK_RETRIEVE https://:7777 | python3 -m json.tool
[
    {
        "path": "/hello",
        "query": "",
        "method": "GET",
        "body": "",
        "headers": {
            "Host": "localhost:7777",
            "User-Agent": "curl/7.81.0",
            "Accept": "*/*"
        }
    }
]

您可以使用此功能来对测试代码进行断言,以验证正在执行的代码发出的 HTTP 调用。

重置模拟服务器

要使模拟服务器忘记所有已设置的固定响应和所有已记录的请求,请使用 MOCK_RESET HTTP 方法

$ curl -X MOCK_RESET -D - https://:7777
HTTP/1.0 200 OK
Server: BaseHTTP/0.6 Python/3.10.4
Date: Mon, 13 Jun 2022 20:37:35 GMT

Mock resetted

此时,就像我们刚刚启动服务器一样,如果您发送 MOCK_RETRIEVE,它将返回空

$ curl -s -X MOCK_RETRIEVE https://:7777
[]

历史记录

0.1.0a1 (2020-06-09)

  • 首次发布在 PyPI 上。

0.1.1 (2022-06-13)

  • 添加了基本文档。

  • 添加了代码检查器和改进了维护工具。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

beyondvcr-0.1.1.tar.gz (6.0 kB 查看哈希值)

上传时间

构建分布

beyondvcr-0.1.1-py3-none-any.whl (6.4 kB 查看哈希值)

上传时间 Python 3

由以下提供支持