diff options
| author | François Freitag <mail@franek.fr> | 2019-03-07 21:58:30 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-04-30 16:20:51 +0200 |
| commit | 568eed9e79470b9ddf3e1b3bbad9123ada45eae8 (patch) | |
| tree | 6606bd5bad518d0aed7f892148f4aa8fbf4188cf /tests/test_runner | |
| parent | 719b7466203181066d9537d2e3bec687dffc9f41 (diff) | |
Fixed #30245 -- Added -k option to DiscoverRunner.
Diffstat (limited to 'tests/test_runner')
| -rw-r--r-- | tests/test_runner/test_discover_runner.py | 40 |
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): |
