7

我目前正在尝试使用 requests_mock 库进行单元测试以修补请求。我编写了以下代码:

def test_general_search(requests_mock):
    params = {'query': 'testsetset', 'exact': 0, 'max_pages': '1', 'category': 'username'}
    requests_mock.get(f'{MOCK_ADDRESS}', json=MOCK_RESPONSE)
    client = Client(MOCK_ADDRESS, auth=MOCK_CREDS, headers=MOCK_HEADERS)
    res = general_search(client, params)
    assert ...

但我收到以下错误:

requests_mock.exceptions.NoMockAddress: No mock address: GET https://fake-url.com/search?query=username%3Atestsetset&page=1

谁能帮我弄清楚如何解决它?我使用 mock 作为 pytest 功能。

4

1 回答 1

5

当有关模拟请求的某些内容时会发生这种情况

在这种情况下

requests_mock.get(f'{MOCK_ADDRESS}', json=MOCK_RESPONSE)

与正在测试的代码的获取请求不完全匹配所以我想说你需要打印出测试类中的 URL 和测试代码中的 URL。

例如,我遇到了同样的错误,直到我做了类似的事情

    @requests_mock.Mocker(kw='mock')
    def test_get_data_from_endpoints(self, **kwargs):
        kwargs['mock'].get('http://testurl.org', json=response_1)

更多信息在这里:https ://requests-mock.readthedocs.io/en/latest/matching.html#query-strings

于 2021-02-15T19:52:44.340 回答