Python 提供的单元测试重试功能

Pun*_*cky 6 python pytest python-3.x

我正在使用下面的代码来执行指数重试。我已将重试设置为 5。作为单元测试的一部分,我正在模拟响应并返回状态代码 503。但是,当我使用此单元测试时,我没有看到执行了 5 次重试。我应该对单元测试进行哪些更改以验证 session.get 已重试 5 次?

try:
    max_retries = Retry(total=retries, backoff_factor=5, status_forcelist=[500, 502, 503, 504, 429])
    self.session.mount('https://', HTTPAdapter(max_retries=max_retries))
    # Perform GET request
    response = self.session.get(url, verify=verify)
except Exception as e:
    print(f" Exception occured {e}")
return response
Run Code Online (Sandbox Code Playgroud)

单元测试

def test_my_function_retries(self):    
    responses.add(responses.GET,
                  'https://requesturl',
                  json={}, status=503)
    request.get()
Run Code Online (Sandbox Code Playgroud)

Pun*_*cky 1

我能够使用 httpretty 来测试重试

@httpretty.activate
def test_my_function(self):
    httpretty.register_uri(
        httpretty.GET,
        url,           
        responses=[
            httpretty.Response(
                body='{}',
                status=503,
            ),
        ]
    )

    my_class = MyClass()
    my_class.my_function()
    print(len(httpretty.latest_requests()))
Run Code Online (Sandbox Code Playgroud)