summaryrefslogtreecommitdiff
path: root/tests/integration/base_cache_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/integration/base_cache_test.py')
-rw-r--r--tests/integration/base_cache_test.py35
1 files changed, 6 insertions, 29 deletions
diff --git a/tests/integration/base_cache_test.py b/tests/integration/base_cache_test.py
index 0b93a8c..8282452 100644
--- a/tests/integration/base_cache_test.py
+++ b/tests/integration/base_cache_test.py
@@ -17,12 +17,6 @@ from requests import PreparedRequest, Session
from requests_cache import ALL_METHODS, CachedResponse, CachedSession
from requests_cache.backends.base import BaseCache
-from requests_cache.serializers import (
- SERIALIZERS,
- SerializerPipeline,
- Stage,
- safe_pickle_serializer,
-)
from tests.conftest import (
CACHE_NAME,
ETAG,
@@ -41,20 +35,9 @@ from tests.conftest import (
logger = getLogger(__name__)
-# Handle optional dependencies if they're not installed,
-# so any skipped tests will explicitly be shown in pytest output
-TEST_SERIALIZERS = SERIALIZERS.copy()
-try:
- TEST_SERIALIZERS['safe_pickle'] = safe_pickle_serializer(secret_key='hunter2')
-except ImportError:
- TEST_SERIALIZERS['safe_pickle'] = 'safe_pickle_placeholder'
VALIDATOR_HEADERS = [{'ETag': ETAG}, {'Last-Modified': LAST_MODIFIED}]
-def _valid_serializer(serializer) -> bool:
- return isinstance(serializer, (SerializerPipeline, Stage))
-
-
class BaseCacheTest:
"""Base class for testing cache backend classes"""
@@ -76,29 +59,23 @@ class BaseCacheTest:
session = cls().init_session(clear=True)
session.close()
- @pytest.mark.parametrize('serializer', TEST_SERIALIZERS.values())
@pytest.mark.parametrize('method', HTTPBIN_METHODS)
@pytest.mark.parametrize('field', ['params', 'data', 'json'])
- def test_all_methods(self, field, method, serializer):
- """Test all relevant combinations of (methods X data fields X serializers).
+ def test_all_methods(self, field, method, serializer=None):
+ """Test all relevant combinations of methods X data fields.
Requests with different request params, data, or json should be cached under different keys.
- """
- if not _valid_serializer(serializer):
- pytest.skip(f'Dependencies not installed for {serializer}')
+ Note: Serializer combinations are only tested for Filesystem backend.
+ """
url = httpbin(method.lower())
session = self.init_session(serializer=serializer)
for params in [{'param_1': 1}, {'param_1': 2}, {'param_2': 2}]:
assert session.request(method, url, **{field: params}).from_cache is False
assert session.request(method, url, **{field: params}).from_cache is True
- @pytest.mark.parametrize('serializer', TEST_SERIALIZERS.values())
@pytest.mark.parametrize('response_format', HTTPBIN_FORMATS)
- def test_all_response_formats(self, response_format, serializer):
- """Test all relevant combinations of (response formats X serializers)"""
- if not _valid_serializer(serializer):
- pytest.skip(f'Dependencies not installed for {serializer}')
-
+ def test_all_response_formats(self, response_format, serializer=None):
+ """Test all relevant combinations of response formats X serializers"""
session = self.init_session(serializer=serializer)
# Workaround for this issue: https://github.com/kevin1024/pytest-httpbin/issues/60
if response_format == 'json' and USE_PYTEST_HTTPBIN: