gpt4 book ai didi

python - 如何为向 Web 发出 API 请求的函数编写单元测试代码?

转载 作者:行者123 更新时间:2023-12-05 01:59:37 26 4
gpt4 key购买 nike

我正在用 pytest 为我的 python 函数编写单元测试代码。这些功能与 requests 模块一起使用,使我们能够轻松地与 Web 服务器通信。问题是函数与之通信的 Web 服务器不会返回相同的值。例如,函数与 www.toolmarket.com 通信,询问 Tommy drill 的价格。但有时,Tommy drill 不在网上商店的列表中。在这种情况下,我的测试代码返回 f。这种代码功能如何编写测试代码?


编辑:添加测试代码

def test_get_data():
assert Info(None, None, None).get_data("Tommy drill") == (
"id" : "KRG552100411"
)

我想像上面那样做测试。 Tommy drill 只是商店中的其中一件商品。但有时,该项目会从列表中消失。所以测试返回 f

最佳答案

上面的代码片段看起来像单元测试。而且,由于您在实际代码中使用请求模块,因此最好在编写单元测试时模拟 API 调用。

它不会从测试函数进行 API 调用,因为我们使用了 python 模拟。对于 mock,我们使用 @patch 并在我们实际进行 API 调用的地方指定 python,以便它知道要模拟什么。

如果它可以处理响应,它正在验证代码。因此,我们不想在每次进行单元测试时都对外部服务进行 API 调用。

总结一下——

当您进行实际的 API 调用时,您并不是在进行单元测试,这更像是集成测试

当您想进行单元测试时,您是在测试您的代码是否可以在不实际进行调用的情况下接受和处理预期的 API 调用响应。您可以通过使用模拟库(例如“响应”库,它向请求发出的调用注入(inject)模拟响应)来执行此操作。

如果这有帮助,我也很乐意为 API 请求的 Python Mocking 提供帮助。

关于python - 如何为向 Web 发出 API 请求的函数编写单元测试代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67697668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com