diff options
author | valerii@valeriis-air.(none) <valery.chirkov99@gmail.com> | 2023-05-05 00:13:34 +0200 |
---|---|---|
committer | valerii@valeriis-air.(none) <valery.chirkov99@gmail.com> | 2023-05-05 00:13:34 +0200 |
commit | cc9179eda843a2fa5b2c4e4957b583d8f0b5cc47 (patch) | |
tree | 623c7b9553c75ce1eb167dd6cba7be2ad9ed4681 | |
parent | update(quora/api): Modified a request_with_retries function. (diff) | |
download | gpt4free-cc9179eda843a2fa5b2c4e4957b583d8f0b5cc47.tar gpt4free-cc9179eda843a2fa5b2c4e4957b583d8f0b5cc47.tar.gz gpt4free-cc9179eda843a2fa5b2c4e4957b583d8f0b5cc47.tar.bz2 gpt4free-cc9179eda843a2fa5b2c4e4957b583d8f0b5cc47.tar.lz gpt4free-cc9179eda843a2fa5b2c4e4957b583d8f0b5cc47.tar.xz gpt4free-cc9179eda843a2fa5b2c4e4957b583d8f0b5cc47.tar.zst gpt4free-cc9179eda843a2fa5b2c4e4957b583d8f0b5cc47.zip |
-rw-r--r-- | gpt4free/quora/tests/__init__.py | 0 | ||||
-rw-r--r-- | gpt4free/quora/tests/test_api.py | 38 |
2 files changed, 38 insertions, 0 deletions
diff --git a/gpt4free/quora/tests/__init__.py b/gpt4free/quora/tests/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/gpt4free/quora/tests/__init__.py diff --git a/gpt4free/quora/tests/test_api.py b/gpt4free/quora/tests/test_api.py new file mode 100644 index 00000000..2a4bb41b --- /dev/null +++ b/gpt4free/quora/tests/test_api.py @@ -0,0 +1,38 @@ +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) |