1import sys
2import unittest.case
3import unittest.result
4import unittest.suite
5from types import ModuleType
6from typing import Any, Callable, List, Optional, Sequence, Type
7
8_SortComparisonMethod = Callable[[str, str], int]
9_SuiteClass = Callable[[List[unittest.case.TestCase]], unittest.suite.TestSuite]
10
11class TestLoader:
12    errors: List[Type[BaseException]]
13    testMethodPrefix: str
14    sortTestMethodsUsing: _SortComparisonMethod
15
16    if sys.version_info >= (3, 7):
17        testNamePatterns: Optional[List[str]]
18
19    suiteClass: _SuiteClass
20    def loadTestsFromTestCase(self, testCaseClass: Type[unittest.case.TestCase]) -> unittest.suite.TestSuite: ...
21    def loadTestsFromModule(self, module: ModuleType, *args: Any, pattern: Any = ...) -> unittest.suite.TestSuite: ...
22    def loadTestsFromName(self, name: str, module: Optional[ModuleType] = ...) -> unittest.suite.TestSuite: ...
23    def loadTestsFromNames(self, names: Sequence[str], module: Optional[ModuleType] = ...) -> unittest.suite.TestSuite: ...
24    def getTestCaseNames(self, testCaseClass: Type[unittest.case.TestCase]) -> Sequence[str]: ...
25    def discover(self, start_dir: str, pattern: str = ..., top_level_dir: Optional[str] = ...) -> unittest.suite.TestSuite: ...
26
27defaultTestLoader: TestLoader
28
29if sys.version_info >= (3, 7):
30    def getTestCaseNames(
31        testCaseClass: Type[unittest.case.TestCase],
32        prefix: str,
33        sortUsing: _SortComparisonMethod = ...,
34        testNamePatterns: Optional[List[str]] = ...,
35    ) -> Sequence[str]: ...
36
37else:
38    def getTestCaseNames(
39        testCaseClass: Type[unittest.case.TestCase], prefix: str, sortUsing: _SortComparisonMethod = ...
40    ) -> Sequence[str]: ...
41
42def makeSuite(
43    testCaseClass: Type[unittest.case.TestCase],
44    prefix: str = ...,
45    sortUsing: _SortComparisonMethod = ...,
46    suiteClass: _SuiteClass = ...,
47) -> unittest.suite.TestSuite: ...
48def findTestCases(
49    module: ModuleType, prefix: str = ..., sortUsing: _SortComparisonMethod = ..., suiteClass: _SuiteClass = ...
50) -> unittest.suite.TestSuite: ...
51