summaryrefslogtreecommitdiff
path: root/tests/test_runner
diff options
context:
space:
mode:
authorChris Jerdonek <chris.jerdonek@gmail.com>2016-08-11 03:47:12 -0700
committerTim Graham <timograham@gmail.com>2016-08-26 14:24:27 -0400
commit42dcceba614081966dfb5f236ae1b6fe78f31683 (patch)
treee928f493f89befd48da83178fa3b1cf6ad86d209 /tests/test_runner
parenta02b5848ae6025ad3ef12cf6646ffd3e82a66067 (diff)
Fixed #26942 -- Added support for subtests during parallel testing.
Diffstat (limited to 'tests/test_runner')
-rw-r--r--tests/test_runner/test_parallel.py67
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',)")