如何在python中使用pytest和嘲笑为使用http客户端库的函数创建单元测试?

问题描述

如何使用pytest模拟测试以下功能

import http.client

def get_response(req_type,host,sub_domain,payload=None,headers=None,body=None):

    conn = http.client.HTTPSConnection(host)
    conn.request(req_type,headers=headers,body=payload)
    response = conn.getresponse()

    if response.status != 200:
        raise Exception('invalid http status ' + str(response.status)
                        + ',detail body:' + response.read().decode("utf-8"))

    data = response.read().decode("utf-8")
    conn.close()

    return data

通过使用pytest_mock库并参考代码here,我能够对使用get_response()执行某些操作的其他功能进行单元测试。因此,如果我们甚至需要使用pytest_mock库为get_response

进行单元测试,也很好

话虽如此,到目前为止,我所看到的解决方案都是针对requestsunittest库的。

我想避免在基于模拟的单元测试中创建http服务器或flask服务器。

Pytest documentation似乎建议我需要一个http.client.HTTPSConnectionconn.request()conn.getresponse()的补丁程序来对get_response()进行单元测试。是这样吗?

一个最小的工作示例会有所帮助。预先感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)