Commit fd628cf5 authored by Jason Fried's avatar Jason Fried Committed by Łukasz Langa

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

parent f6243ac1
......@@ -229,7 +229,9 @@ class TestLoader(object):
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)))
......
import functools
import sys
import types
import warnings
......@@ -1575,5 +1576,20 @@ class Test_TestLoader(unittest.TestCase):
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()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment