Skip to content

Commit 04af063

Browse files
committed
Expose fixtures to change Django's {Transaction,}TestCase
This adds `django_db_testcase` and `django_transactional_db_testcase`, which allows to override them to e.g. enable the `multi_db` feature: ``` @pytest.fixture def django_db_testcase(django_db_testcase): django_db_testcase.multi_db = True return django_db_testcase ``` Ref: pytest-dev#397
1 parent ae58b2f commit 04af063

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

pytest_django/fixtures.py

+16-4
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from .lazy_django import get_django_version, skip_if_no_django
1515

1616
__all__ = ['django_db_setup', 'db', 'transactional_db', 'admin_user',
17+
'django_db_testcase', 'django_transactional_db_testcase',
1718
'django_user_model', 'django_username_field',
1819
'client', 'admin_client', 'rf', 'settings', 'live_server',
1920
'_live_server_helper']
@@ -108,6 +109,18 @@ def teardown_database():
108109
request.addfinalizer(teardown_database)
109110

110111

112+
@pytest.fixture
113+
def django_db_testcase(request):
114+
from django.test import TestCase
115+
return TestCase
116+
117+
118+
@pytest.fixture
119+
def django_transactional_db_testcase(request):
120+
from django.test import TransactionTestCase
121+
return TransactionTestCase
122+
123+
111124
def _django_db_fixture_helper(transactional, request, django_db_blocker):
112125
if is_django_unittest(request):
113126
return
@@ -119,10 +132,9 @@ def _django_db_fixture_helper(transactional, request, django_db_blocker):
119132
django_db_blocker.unblock()
120133
request.addfinalizer(django_db_blocker.restore)
121134

122-
if transactional:
123-
from django.test import TransactionTestCase as django_case
124-
else:
125-
from django.test import TestCase as django_case
135+
testcase_class_fixture = ('django_transactional_db_testcase'
136+
if transactional else 'django_db_testcase')
137+
django_case = getfixturevalue(request, testcase_class_fixture)
126138

127139
test_case = django_case(methodName='__init__')
128140
test_case._pre_setup()

pytest_django/plugin.py

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
from .fixtures import rf # noqa
3232
from .fixtures import settings # noqa
3333
from .fixtures import transactional_db # noqa
34+
from .fixtures import django_db_testcase # noqa
35+
from .fixtures import django_transactional_db_testcase # noqa
3436
from .pytest_compat import getfixturevalue
3537

3638
from .lazy_django import (django_settings_is_configured,

0 commit comments

Comments
 (0)