From 5e2f59314588f4d263fe728ee8ba7da92f3439a0 Mon Sep 17 00:00:00 2001 From: R David Murray Date: Thu, 11 Apr 2013 08:55:45 -0400 Subject: #14971: Use class method name, not function.__name__, during unittest discovery. --- Lib/unittest/test/test_loader.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'Lib/unittest/test/test_loader.py') diff --git a/Lib/unittest/test/test_loader.py b/Lib/unittest/test/test_loader.py index d1b9ef5a0a..e86c09b359 100644 --- a/Lib/unittest/test/test_loader.py +++ b/Lib/unittest/test/test_loader.py @@ -806,6 +806,22 @@ class Test_TestLoader(unittest.TestCase): ref_suite = unittest.TestSuite([MyTestCase('test')]) self.assertEqual(list(suite), [ref_suite]) + # #14971: Make sure the dotted name resolution works even if the actual + # function doesn't have the same name as is used to find it. + def test_loadTestsFromName__function_with_different_name_than_method(self): + # lambdas have the name ''. + m = types.ModuleType('m') + class MyTestCase(unittest.TestCase): + test = lambda: 1 + m.testcase_1 = MyTestCase + + loader = unittest.TestLoader() + suite = loader.loadTestsFromNames(['testcase_1.test'], m) + self.assertIsInstance(suite, loader.suiteClass) + + ref_suite = unittest.TestSuite([MyTestCase('test')]) + self.assertEqual(list(suite), [ref_suite]) + # "The specifier name is a ``dotted name'' that may resolve ... to ... a # test method within a test case class" # -- cgit v1.2.1