0

我有一个使用请求库进行休息调用的函数

如果由于任何原因无法连接,它应该向调用者返回“oh-no”

我正在使用单元测试的响应,这应该允许我在不实际进行出站呼叫的情况下进行测试

我可以这样测试:

# the function
def my_request(url):
    try:
        return requests.request(url=url)
    except requests.exceptions.ConnectionError:
        return "oh-no"
    except Exception:
        raise

# my test without responses
def test_request():
    bad_url = "https://lskjdklfjslkfjslkdf.eee.com"
    response = myapp.my_request(bad_url)
    assert response == 'oh-no'

但我想知道响应库是否可以做得更好?

# test with responses
@responses.activate
def test_request():
    bad_url = "https://lskjdklfjslkfjslkdf.eee.com"
    responses.add(
      "post",
      bad_url,
      json={"error": "not found"},
      status=500,
    )

    response = myapp.my_request(bad_url)
    assert response == 'oh-no'

响应不会在这里抛出异常;我想这是其目的的一部分。在我只使用带有错误 url 的请求在我的单元测试中生成异常之前(这似乎还不错),我想知道响应库是否可以在不进行出站调用的情况下引发异常。而且,如果尝试这样做是没有意义的(如果我应该像第一个示例那样使用请求并完成它)。

4

0 回答 0