File tree Expand file tree Collapse file tree 2 files changed +28
-16
lines changed Expand file tree Collapse file tree 2 files changed +28
-16
lines changed Original file line number Diff line number Diff line change @@ -520,20 +520,16 @@ def _django_setup_unittest(request, django_db_blocker):
520520 yield
521521 return
522522
523- from _pytest .unittest import TestCaseFunction
523+ # Fix/patch pytest.
524+ # Before pytest 5.4: https://github.com/pytest-dev/pytest/issues/5991
525+ # After pytest 5.4: https://github.com/pytest-dev/pytest-django/issues/824
526+ from _pytest .monkeypatch import MonkeyPatch
524527
525- if "debug" in TestCaseFunction .runtest .__code__ .co_names :
526- # Fix pytest (https://github.com/pytest-dev/pytest/issues/5991), only
527- # if "self._testcase.debug()" is being used (forward compatible).
528- from _pytest .monkeypatch import MonkeyPatch
528+ def non_debugging_runtest (self ):
529+ self ._testcase (result = self )
529530
530- def non_debugging_runtest (self ):
531- self ._testcase (result = self )
532-
533- mp_debug = MonkeyPatch ()
534- mp_debug .setattr ("_pytest.unittest.TestCaseFunction.runtest" , non_debugging_runtest )
535- else :
536- mp_debug = None
531+ mp_debug = MonkeyPatch ()
532+ mp_debug .setattr ("_pytest.unittest.TestCaseFunction.runtest" , non_debugging_runtest )
537533
538534 request .getfixturevalue ("django_db_setup" )
539535
Original file line number Diff line number Diff line change @@ -58,10 +58,11 @@ def tearDown(self):
5858
5959def test_sole_test (django_testdir ):
6060 """
61- Make sure the database are configured when only Django TestCase classes
61+ Make sure the database is configured when only Django TestCase classes
6262 are collected, without the django_db marker.
63- """
6463
64+ Also ensures that the DB is available after a failure (#824).
65+ """
6566 django_testdir .create_test_module (
6667 """
6768 import os
@@ -80,12 +81,27 @@ def test_foo(self):
8081
8182 # Make sure it is usable
8283 assert Item.objects.count() == 0
84+
85+ assert 0, "trigger_error"
86+
87+ class TestBar(TestCase):
88+ def test_bar(self):
89+ assert Item.objects.count() == 0
8390 """
8491 )
8592
8693 result = django_testdir .runpytest_subprocess ("-v" )
87- result .stdout .fnmatch_lines (["*TestFoo*test_foo PASSED*" ])
88- assert result .ret == 0
94+ result .stdout .fnmatch_lines (
95+ [
96+ "*::test_foo FAILED" ,
97+ "*::test_bar PASSED" ,
98+ '> assert 0, "trigger_error"' ,
99+ "E AssertionError: trigger_error" ,
100+ "E assert 0" ,
101+ "*= 1 failed, 1 passed in *" ,
102+ ]
103+ )
104+ assert result .ret == 1
89105
90106
91107class TestUnittestMethods :
You can’t perform that action at this time.
0 commit comments