summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvalerii@valeriis-air.(none) <valery.chirkov99@gmail.com>2023-05-05 00:13:34 +0200
committervalerii@valeriis-air.(none) <valery.chirkov99@gmail.com>2023-05-05 00:13:34 +0200
commitcc9179eda843a2fa5b2c4e4957b583d8f0b5cc47 (patch)
tree623c7b9553c75ce1eb167dd6cba7be2ad9ed4681
parentupdate(quora/api): Modified a request_with_retries function. (diff)
downloadgpt4free-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__.py0
-rw-r--r--gpt4free/quora/tests/test_api.py38
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)