mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #30245 -- Added -k option to DiscoverRunner.
This commit is contained in:
committed by
Mariusz Felisiak
parent
719b746620
commit
568eed9e79
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user