diff options
| author | Chris Jerdonek <chris.jerdonek@gmail.com> | 2016-08-11 03:47:12 -0700 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-08-26 14:24:27 -0400 |
| commit | 42dcceba614081966dfb5f236ae1b6fe78f31683 (patch) | |
| tree | e928f493f89befd48da83178fa3b1cf6ad86d209 /tests/test_runner | |
| parent | a02b5848ae6025ad3ef12cf6646ffd3e82a66067 (diff) | |
Fixed #26942 -- Added support for subtests during parallel testing.
Diffstat (limited to 'tests/test_runner')
| -rw-r--r-- | tests/test_runner/test_parallel.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/tests/test_runner/test_parallel.py b/tests/test_runner/test_parallel.py new file mode 100644 index 0000000000..529fe22092 --- /dev/null +++ b/tests/test_runner/test_parallel.py @@ -0,0 +1,67 @@ +import unittest + +from django.test import SimpleTestCase +from django.test.runner import RemoteTestResult +from django.utils import six + +try: + import tblib +except ImportError: + tblib = None + + +class ParallelTestRunnerTest(SimpleTestCase): + """ + End-to-end tests of the parallel test runner. + + These tests are only meaningful when running tests in parallel using + the --parallel option, though it doesn't hurt to run them not in + parallel. + """ + + @unittest.skipUnless(six.PY3, 'subtests were added in Python 3.4') + def test_subtest(self): + """ + Check that passing subtests work. + """ + for i in range(2): + with self.subTest(index=i): + self.assertEqual(i, i) + + +class SampleFailingSubtest(SimpleTestCase): + + # This method name doesn't begin with "test" to prevent test discovery + # from seeing it. + def dummy_test(self): + """ + A dummy test for testing subTest failures. + """ + for i in range(3): + with self.subTest(index=i): + self.assertEqual(i, 1) + + +class RemoteTestResultTest(SimpleTestCase): + + @unittest.skipUnless(six.PY3 and tblib is not None, 'requires tblib to be installed') + def test_add_failing_subtests(self): + """ + Failing subtests are added correctly using addSubTest(). + """ + # Manually run a test with failing subtests to prevent the failures + # from affecting the actual test run. + result = RemoteTestResult() + subtest_test = SampleFailingSubtest(methodName='dummy_test') + subtest_test.run(result=result) + + events = result.events + self.assertEqual(len(events), 4) + + event = events[1] + self.assertEqual(event[0], 'addSubTest') + self.assertEqual(str(event[2]), 'dummy_test (test_runner.test_parallel.SampleFailingSubtest) (index=0)') + self.assertEqual(repr(event[3][1]), "AssertionError('0 != 1',)") + + event = events[2] + self.assertEqual(repr(event[3][1]), "AssertionError('2 != 1',)") |
