mirror of
https://github.com/jazzband/django-constance.git
synced 2026-03-16 22:40:24 +00:00
* provides: base override class; unittest and pytest overrides * raise invalid config error earlier * update AUTHORS * avoid AttributeError * fix comment * add tests * fix tests, update docstring * update docs, improve tests * fix docs * fix markdown * refactor pytest override, use hidden fixture, refactor base and unittest classes * improve docstring and error * refactor pytest override to use hooks * set minimum pytest version * revert empty lines removal * introduce pytest test runner for package, refactoring * WIP * Finalize tox config, refactor docs, add global fixture * skip py35 * pytest command: remove unnecessary ignore * address comments * Update constance/test/pytest.py * address comments * add test for checking nested markers Co-authored-by: Camilo Nova <camilo.nova@gmail.com> Co-authored-by: Paweł Zarębski <ppjzarebski@gmail.com>
78 lines
2.6 KiB
Python
78 lines
2.6 KiB
Python
import unittest
|
|
|
|
|
|
try:
|
|
import pytest
|
|
|
|
from constance import config
|
|
from constance.test.pytest import override_config
|
|
|
|
|
|
class TestPytestOverrideConfigFunctionDecorator:
|
|
"""Test that the override_config decorator works correctly for Pytest classes.
|
|
|
|
Test usage of override_config on test method and as context manager.
|
|
"""
|
|
|
|
def test_default_value_is_true(self):
|
|
"""Assert that the default value of config.BOOL_VALUE is True."""
|
|
assert config.BOOL_VALUE
|
|
|
|
@pytest.mark.override_config(BOOL_VALUE=False)
|
|
def test_override_config_on_method_changes_config_value(self):
|
|
"""Assert that the pytest mark decorator changes config.BOOL_VALUE."""
|
|
assert not config.BOOL_VALUE
|
|
|
|
def test_override_config_as_context_manager_changes_config_value(self):
|
|
"""Assert that the context manager changes config.BOOL_VALUE."""
|
|
with override_config(BOOL_VALUE=False):
|
|
assert not config.BOOL_VALUE
|
|
|
|
assert config.BOOL_VALUE
|
|
|
|
@override_config(BOOL_VALUE=False)
|
|
def test_method_decorator(self):
|
|
"""Ensure `override_config` can be used as test method decorator."""
|
|
assert not config.BOOL_VALUE
|
|
|
|
|
|
@pytest.mark.override_config(BOOL_VALUE=False)
|
|
class TestPytestOverrideConfigDecorator:
|
|
"""Test that the override_config decorator works on classes."""
|
|
|
|
def test_override_config_on_class_changes_config_value(self):
|
|
"""Asser that the class decorator changes config.BOOL_VALUE."""
|
|
assert not config.BOOL_VALUE
|
|
|
|
@pytest.mark.override_config(BOOL_VALUE='True')
|
|
def test_override_config_on_overrided_value(self):
|
|
"""Ensure that method mark decorator changes already overrided value for class."""
|
|
assert config.BOOL_VALUE == 'True'
|
|
|
|
|
|
def test_fixture_override_config(override_config):
|
|
"""
|
|
Ensure `override_config` fixture is available globally
|
|
and can be used in test functions.
|
|
"""
|
|
with override_config(BOOL_VALUE=False):
|
|
assert not config.BOOL_VALUE
|
|
|
|
@override_config(BOOL_VALUE=False)
|
|
def test_func_decorator():
|
|
"""Ensure `override_config` can be used as test function decorator."""
|
|
assert not config.BOOL_VALUE
|
|
|
|
except ImportError:
|
|
pass
|
|
|
|
|
|
class PytestTests(unittest.TestCase):
|
|
def setUp(self):
|
|
self.skipTest('Skip all pytest tests when using unittest')
|
|
|
|
def test_do_not_skip_silently(self):
|
|
"""
|
|
If no at least one test present, unittest silently skips module.
|
|
"""
|
|
pass
|