python - 如何测试 Tornado 处理程序是否正确调用另一个 API?

标签 python tornado

我的 Tornado 应用程序有一个处理程序,它使用 AsyncHTTPClient 调用另一个外部 API,然后返回。

如何编写一个单元测试来测试我的处理程序是否正确调用外部 API?

我觉得我应该在单元测试中运行第二个服务器,它模拟外部服务器并提供与我的处理程序所使用的相同的 API。我可以提供要点击的 URI 作为我的应用程序的参数,因此它不是硬编码的。但是我不确定如何在 AsyncHTTPTestCase 中(正确地)拉出 2 个服务器。

最佳答案

关于如何分解和正确处理测试,有很多意见。对于我正在测试必须与第三方对话的场景,在您的示例中,我会将其分成 3 个部分,一个非常薄的部分,仅与 API 对话。然后我会编写一个集成测试来测试与 API 对话的部分。然后我会制作一个模拟或其他测试装置来替换对 API 的调用并编写处理 API 调用的代码。这可以很容易地放入单元测试中,因为它通常类似于:

my_new_data = do_process(call_my_third_party_api())

只需传入第三方 API 调用返回的数据的模拟,您就可以轻松地为 do_process 编写测试。

然后,当需要测试您的处理程序时,您只需使用返回您期望从第三方获得的结果的内容来模拟您的 api 调用。

现在您有三个不同的测试来测试应用程序的每个区域。您可以运行测试来确保您的代码正确访问 API。第一个测试告诉您是否正确处理 API,第三个测试告诉您是否正确地将信息返回给最终用户。

关于python - 如何测试 Tornado 处理程序是否正确调用另一个 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40138891/

相关文章:

python - Numpy,数组没有自己的数据?

python - Django 在 AWS 上安装失败

Python请求post流文件并tornado接收它

python - Tornado Coroutine - 自定义函数

python - Django:通过多个 ID 过滤查询集

python - 在Python中如何判断某个键是否被按下?

python - 根据时间对 pandas DataFrame 进行子集化

sockets - 是否为RequestHandler.write提供了 Tornado 回调?

python - Tornado :如何为多个请求共享 pymongo 连接?

python - Tornado 。类似 Django 的测试运行器和测试数据库