summaryrefslogtreecommitdiff
path: root/tests/test_runner
diff options
context:
space:
mode:
authorFrançois Freitag <mail@franek.fr>2019-03-07 21:58:30 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-04-30 16:20:51 +0200
commit568eed9e79470b9ddf3e1b3bbad9123ada45eae8 (patch)
tree6606bd5bad518d0aed7f892148f4aa8fbf4188cf /tests/test_runner
parent719b7466203181066d9537d2e3bec687dffc9f41 (diff)
Fixed #30245 -- Added -k option to DiscoverRunner.
Diffstat (limited to 'tests/test_runner')
-rw-r--r--tests/test_runner/test_discover_runner.py40
1 files changed, 38 insertions, 2 deletions
diff --git a/tests/test_runner/test_discover_runner.py b/tests/test_runner/test_discover_runner.py
index caa48a852d..160f174b76 100644
--- a/tests/test_runner/test_discover_runner.py
+++ b/tests/test_runner/test_discover_runner.py
@@ -1,12 +1,13 @@
import os
from argparse import ArgumentParser
from contextlib import contextmanager
-from unittest import TestSuite, TextTestRunner, defaultTestLoader
+from unittest import TestSuite, TextTestRunner, defaultTestLoader, skipUnless
from django.db import connections
from django.test import SimpleTestCase
from django.test.runner import DiscoverRunner
from django.test.utils import captured_stdout
+from django.utils.version import PY37
@contextmanager
@@ -23,6 +24,13 @@ def change_cwd(directory):
class DiscoverRunnerTests(SimpleTestCase):
+ @staticmethod
+ def get_test_methods_names(suite):
+ return [
+ t.__class__.__name__ + '.' + t._testMethodName
+ for t in suite._tests
+ ]
+
def test_init_debug_mode(self):
runner = DiscoverRunner()
self.assertFalse(runner.debug_mode)
@@ -71,6 +79,34 @@ class DiscoverRunnerTests(SimpleTestCase):
self.assertEqual(count, 1)
+ @skipUnless(PY37, 'unittest -k option requires Python 3.7 and later')
+ def test_name_patterns(self):
+ all_test_1 = [
+ 'DjangoCase1.test_1', 'DjangoCase2.test_1',
+ 'SimpleCase1.test_1', 'SimpleCase2.test_1',
+ 'UnittestCase1.test_1', 'UnittestCase2.test_1',
+ ]
+ all_test_2 = [
+ 'DjangoCase1.test_2', 'DjangoCase2.test_2',
+ 'SimpleCase1.test_2', 'SimpleCase2.test_2',
+ 'UnittestCase1.test_2', 'UnittestCase2.test_2',
+ ]
+ all_tests = sorted([*all_test_1, *all_test_2, 'UnittestCase2.test_3_test'])
+ for pattern, expected in [
+ [['test_1'], all_test_1],
+ [['UnittestCase1'], ['UnittestCase1.test_1', 'UnittestCase1.test_2']],
+ [['*test'], ['UnittestCase2.test_3_test']],
+ [['test*'], all_tests],
+ [['test'], all_tests],
+ [['test_1', 'test_2'], sorted([*all_test_1, *all_test_2])],
+ [['test*1'], all_test_1],
+ ]:
+ with self.subTest(pattern):
+ suite = DiscoverRunner(
+ test_name_patterns=pattern
+ ).build_suite(['test_runner_apps.simple'])
+ self.assertEqual(expected, self.get_test_methods_names(suite))
+
def test_file_path(self):
with change_cwd(".."):
count = DiscoverRunner().build_suite(
@@ -170,7 +206,7 @@ class DiscoverRunnerTests(SimpleTestCase):
msg="Methods of Django cases should be reversed.")
self.assertIn('test_2', suite[4].id(),
msg="Methods of simple cases should be reversed.")
- self.assertIn('test_2', suite[8].id(),
+ self.assertIn('test_2', suite[9].id(),
msg="Methods of unittest cases should be reversed.")
def test_overridable_get_test_runner_kwargs(self):