Skip to content

Commit 107ba5b

Browse files
committed
Added failing test for Django1.8 setUpTestData inheritance.
1 parent b9eb210 commit 107ba5b

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

tests/test_django_inheritance.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import pytest
2+
from pytest_django.lazy_django import get_django_version
3+
4+
5+
class TestDjangoInheritance:
6+
@pytest.mark.skipif(get_django_version() < (1, 7), reason=('Django < 1.8 doesn\'t have setUpTestData'))
7+
def test_django(self, django_testdir):
8+
django_testdir.create_test_module('''
9+
from django.test import TestCase
10+
11+
class TestBase(TestCase):
12+
@classmethod
13+
def setUpClass(cls):
14+
print('\\nCALLED: TestBase.setUpClass')
15+
super(TestBase, cls).setUpClass()
16+
17+
@classmethod
18+
def setUpTestData(cls):
19+
print('\\nCALLED: TestBase.setUpTestData')
20+
super(TestBase, cls).setUpTestData()
21+
22+
@classmethod
23+
def tearDownClass(cls):
24+
print('\\nCALLED: TestBase.tearDownClass')
25+
super(TestBase, cls).tearDownClass()
26+
27+
def test_pass(self):
28+
print('\\nCALLED: TestBase.test_pass')
29+
30+
class TestDerived(TestBase):
31+
@classmethod
32+
def setUpClass(cls):
33+
print('\\nCALLED: TestDerived.setUpClass')
34+
super(TestDerived, cls).setUpClass()
35+
36+
@classmethod
37+
def setUpTestData(cls):
38+
print('\\nCALLED: TestDerived.setUpTestData')
39+
super(TestDerived, cls).setUpTestData()
40+
41+
@classmethod
42+
def tearDownClass(cls):
43+
print('\\nCALLED: TestDerived.tearDownClass')
44+
super(TestDerived, cls).tearDownClass()
45+
46+
def test_derived(self):
47+
print('\\nCALLED: TestDerived.test_derived')
48+
''')
49+
50+
result = django_testdir.runpytest('-v', '-s')
51+
result.stdout.fnmatch_lines([
52+
# TestBase execution
53+
"CALLED: TestBase.setUpClass",
54+
"CALLED: TestBase.setUpTestData",
55+
"CALLED: TestBase.test_pass",
56+
"CALLED: TestBase.tearDownClass",
57+
58+
# TestDerived execution
59+
"CALLED: TestDerived.setUpClass",
60+
"CALLED: TestBase.setUpClass",
61+
"CALLED: TestDerived.setUpTestData", # TODO This line breaks!
62+
"CALLED: TestBase.setUpTestData",
63+
"CALLED: TestDerived.test_derived",
64+
"CALLED: TestBase.test_pass",
65+
66+
"CALLED: TestBase.tearDownClass", # TODO tear down in wrong order (?)
67+
"CALLED: TestDerived.tearDownClass",
68+
])
69+
assert result.ret == 0

0 commit comments

Comments
 (0)