bpo-35767: Fix unittest.loader to allow partials as test_functions (#11600)

This commit is contained in:
Jason Fried 2019-01-23 12:57:25 -08:00 committed by Łukasz Langa
parent f6243ac1e4
commit fd628cf5ad
2 changed files with 19 additions and 1 deletions

View file

@ -229,7 +229,9 @@ def shouldIncludeMethod(attrname):
testFunc = getattr(testCaseClass, attrname)
if not callable(testFunc):
return False
fullName = '%s.%s' % (testCaseClass.__module__, testFunc.__qualname__)
fullName = f'%s.%s.%s' % (
testCaseClass.__module__, testCaseClass.__qualname__, attrname
)
return self.testNamePatterns is None or \
any(fnmatchcase(fullName, pattern) for pattern in self.testNamePatterns)
testFnNames = list(filter(shouldIncludeMethod, dir(testCaseClass)))

View file

@ -1,3 +1,4 @@
import functools
import sys
import types
import warnings
@ -1575,5 +1576,20 @@ def test_suiteClass__default_value(self):
self.assertIs(loader.suiteClass, unittest.TestSuite)
def test_partial_functions(self):
def noop(arg):
pass
class Foo(unittest.TestCase):
pass
setattr(Foo, 'test_partial', functools.partial(noop, None))
loader = unittest.TestLoader()
test_names = ['test_partial']
self.assertEqual(loader.getTestCaseNames(Foo), test_names)
if __name__ == "__main__":
unittest.main()