Dav*_*kim 3 python testing pytest web python-requests
我正在使用 pytest 为我的 python 函数编写单元测试代码。这些功能与requests
模块一起使用,使我们能够轻松地与网络服务器通信。问题是函数通信的 Web 服务器不会返回相同的值。例如,函数进行通信以www.toolmarket.com
询问多少钱Tommy drill
。但有时,Tommy drill
不在网上商店的列表中。在这种情况下,我的测试代码返回f
. 对于这种功能的代码我该如何编写测试代码呢?
def test_get_data():
assert Info(None, None, None).get_data("Tommy drill") == (
"id" : "KRG552100411"
)
Run Code Online (Sandbox Code Playgroud)
我想做上面那样的测试。Tommy drill
这只是商店里的商品之一。但问题是有时,该项目会从列表中消失。所以测试返回f
小智 6
上面的代码片段看起来像单元测试。而且,由于您在实际代码中使用 requests 模块,因此最好在编写单元测试时模拟 API 调用。
它不会从测试函数进行 API 调用,因为我们使用 python 模拟。对于模拟,我们使用 @patch 并指定 python,我们实际上在其中进行 API 调用,以便它知道要模拟什么。
它正在验证代码是否可以处理响应。因此,我们不想每次进行单元测试时都对外部服务进行 API 调用。
总结一下——
当您进行实际的 API 调用时,您并不是在进行单元测试,这更像是集成测试
当您想要进行单元测试时,您需要测试您的代码是否可以接受并处理预期的 API 调用响应,而无需实际进行调用。您可以通过使用模拟库(例如“响应”库,它将模拟响应注入到请求发出的调用中)来完成此操作。
如果这有帮助,我也很乐意为 API 请求的 Python Mocking 提供帮助。
归档时间: |
|
查看次数: |
1968 次 |
最近记录: |