Spaces:
Build error
Build error
| import unittest | |
| import requests | |
| from unittest.mock import MagicMock | |
| from gpt4free.quora.api import retry_request | |
| class TestRetryRequest(unittest.TestCase): | |
| def test_successful_request(self): | |
| # Mock a successful request with a 200 status code | |
| mock_response = MagicMock() | |
| mock_response.status_code = 200 | |
| requests.get = MagicMock(return_value=mock_response) | |
| # Call the function and assert that it returns the response | |
| response = retry_request(requests.get, "http://example.com", max_attempts=3) | |
| self.assertEqual(response.status_code, 200) | |
| def test_exponential_backoff(self): | |
| # Mock a failed request that succeeds after two retries | |
| mock_response = MagicMock() | |
| mock_response.status_code = 200 | |
| requests.get = MagicMock(side_effect=[requests.exceptions.RequestException] * 2 + [mock_response]) | |
| # Call the function and assert that it retries with exponential backoff | |
| with self.assertLogs() as logs: | |
| response = retry_request(requests.get, "http://example.com", max_attempts=3, delay=1) | |
| self.assertEqual(response.status_code, 200) | |
| self.assertGreaterEqual(len(logs.output), 2) | |
| self.assertIn("Retrying in 1 seconds...", logs.output[0]) | |
| self.assertIn("Retrying in 2 seconds...", logs.output[1]) | |
| def test_too_many_attempts(self): | |
| # Mock a failed request that never succeeds | |
| requests.get = MagicMock(side_effect=requests.exceptions.RequestException) | |
| # Call the function and assert that it raises an exception after the maximum number of attempts | |
| with self.assertRaises(RuntimeError): | |
| retry_request(requests.get, "http://example.com", max_attempts=3) | |