changeset: 85608:78a5de507f19 branch: 2.7 parent: 85601:93018d47793f user: Michael Foord date: Sun Sep 08 15:34:27 2013 +1200 files: Lib/unittest/loader.py Lib/unittest/test/test_loader.py Misc/NEWS description: Closes issue 14971. unittest test discovery no longer gets confused when a function has a different __name__ than its name in the TestCase class dictionary. diff -r 93018d47793f -r 78a5de507f19 Lib/unittest/loader.py --- a/Lib/unittest/loader.py Sat Sep 07 17:50:35 2013 -0700 +++ b/Lib/unittest/loader.py Sun Sep 08 15:34:27 2013 +1200 @@ -106,7 +106,9 @@ elif (isinstance(obj, types.UnboundMethodType) and isinstance(parent, type) and issubclass(parent, case.TestCase)): - return self.suiteClass([parent(obj.__name__)]) + name = parts[-1] + inst = parent(name) + return self.suiteClass([inst]) elif isinstance(obj, suite.TestSuite): return obj elif hasattr(obj, '__call__'): diff -r 93018d47793f -r 78a5de507f19 Lib/unittest/test/test_loader.py --- a/Lib/unittest/test/test_loader.py Sat Sep 07 17:50:35 2013 -0700 +++ b/Lib/unittest/test/test_loader.py Sun Sep 08 15:34:27 2013 +1200 @@ -1281,6 +1281,21 @@ loader = unittest.TestLoader() self.assertTrue(loader.suiteClass is unittest.TestSuite) + # 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]) if __name__ == '__main__': unittest.main() diff -r 93018d47793f -r 78a5de507f19 Misc/NEWS --- a/Misc/NEWS Sat Sep 07 17:50:35 2013 -0700 +++ b/Misc/NEWS Sun Sep 08 15:34:27 2013 +1200 @@ -32,6 +32,9 @@ Library ------- +- Issue #14971: unittest test discovery no longer gets confused when a function + has a different __name__ than its name in the TestCase class dictionary. + - Issue #18672: Fixed format specifiers for Py_ssize_t in debugging output in the _sre moduel.

AltStyle によって変換されたページ (->オリジナル) /