Python模拟异常http.客户端回应

2024-04-25 20:21:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在测试一个特定的响应代码,并希望在代码不同时模拟出一个测试用例,比如未经授权的401。我使用的是python3.7http.客户端库和pytest

到目前为止,我尝试使用@patch修饰符,并用side_effect调用函数来触发异常

我的测试用例:

from unittest import mock
from application import shorten_url

def mock_status(url):
    raise ConnectionError

@patch("application.shorten_url", side_effect=mock_status)
def test_bitly(client):
    with pytest.raises(ConnectionError) as e:
        shorten_url("something")

我的代码:

^{pr2}$

我真的不明白如何使用mockside_effect正确地引发此异常。在


Tags: 代码fromimporturlapplicationpytestdefstatus
1条回答
网友
1楼 · 发布于 2024-04-25 20:21:26

一个朋友帮我解决了这个问题,这似乎很管用(我还是很困惑):

from unittest.mock import patch, MagicMock

@patch("http.client.HTTPSConnection")
@patch("http.client.HTTPResponse")
def test_bitly(mock_conn, mock_res):
    mock_res.status = 400
    mock_conn.getresponse = MagicMock(return_value=mock_res)

    with pytest.raises(ConnectionError):
        shorten_url("fake-url")

相关问题 更多 >

    热门问题