Source code for gridstatus.tests.test_base
from unittest.mock import Mock, patch
import pytest
import requests
from gridstatus.base import ISOBase
[docs]class TestISOBase:
# Test Case 1: Successful request without retry
[docs] def test_get_json_successful(self):
# Have to mock the module where the requests.get method is called
with patch("gridstatus.base.requests.get") as mocked_get:
mocked_get.return_value.json.return_value = {"key": "value"}
mocked_get.return_value.raise_for_status = Mock()
iso = ISOBase()
response = iso._get_json("http://example.com", False)
assert response == {"key": "value"}
mocked_get.assert_called_once()
# Test Case 2: Successful request on a retry
[docs] def test_get_json_success_after_retry(self):
with patch("gridstatus.base.requests.get") as mocked_get:
mocked_get.side_effect = [
requests.RequestException("Error"),
Mock(json=Mock(return_value={"key": "value"}), raise_for_status=Mock()),
]
iso = ISOBase()
response = iso._get_json("http://example.com", False, retries=1)
assert response == {"key": "value"}
assert mocked_get.call_count == 2
# Test Case 3: Exhaust retries and raise exception
[docs] def test_get_json_exhaust_retries(self):
with patch("gridstatus.base.requests.get") as mocked_get:
mocked_get.side_effect = requests.RequestException("Error")
iso = ISOBase()
with pytest.raises(requests.RequestException):
iso._get_json("http://example.com", False, retries=2)
# Total of 3 calls (1 original + 2 retries)
assert mocked_get.call_count == 3
# Test Case 4: No retries (retries is None)
[docs] def test_get_json_no_retries(self):
with patch("gridstatus.base.requests.get") as mocked_get:
mocked_get.side_effect = requests.RequestException("Error")
iso = ISOBase()
with pytest.raises(requests.RequestException):
iso._get_json("http://example.com", False, retries=None)
mocked_get.assert_called_once()