首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在单元测试Python 3中模拟API调用

在单元测试Python 3中模拟API调用
EN

Stack Overflow用户
提问于 2021-01-11 15:30:48
回答 1查看 374关注 0票数 0

我的任务是为最终进行requests.post API调用的函数编写单元测试。我被要求在Python中使用模仿。我对它相当陌生,并且阅读了很多与它相关的文章。我还在文档之后编写了单元测试。但是,我确实有几个问题,我遇到的文件都没有回答-

  1. 也在单元测试函数中,我正在调用原始函数,即进行API调用。现在,我正在使用mock.return_value来模拟响应。那么,这最终是否也会从单元测试函数发出API调用呢??如果是这样的话,那么它就失败了,在我的用例中,不应该定期对第三方服务器进行API调用.

如果

  1. 没有进行API调用,那么它到底验证了什么呢?我自己输入了响应,比如API调用的状态代码。那么,如果不调用API,如何验证这两者呢?

代码语言:javascript
运行
复制
@patch('post.requests.get')
def test_api_function(self, mock_incident):
    mock_incident.return_value.json.return_value = [{'mock':'json'}]
    mock_incident.return_value.status_code = 200
    response = api_fucntion()

    assert response.status_code == 200

如果您看到,我仍然在对函数(Api_response)进行调用。这对我的模拟单元测试的目的有什么帮助??而且,如果没有进行实际的API调用,它如何验证200个响应??

EN

回答 1

Stack Overflow用户

发布于 2021-03-26 13:28:03

看来我找到了问题的答案。

  1. 它不对测试函数进行API调用,因为我们使用的是python模拟。在模拟中,我们使用@修补程序并指定python,在其中我们实际上正在进行API调用,以便它知道要模拟什么。

  1. 如果它能够处理响应,它正在验证代码。作为原因之一,我们不希望每次进行单元测试时都调用外部服务。

总结一下-

  • 当您进行实际的API调用时,您没有进行单元测试,这更像是集成测试

  • 当您想要进行单元测试时,您正在测试您的代码是否能够接受和处理预期的API调用响应,而无需实际进行调用。您可以使用一个模拟库(例如,“响应”库,它将模拟响应注入到请求发出的调用中。

)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65669782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档