2011-12-13 58 views
2

我需要从每个测试之前unittest运行的SetUp()方法中找到将要运行的测试方法的名称。我怎样才能做到这一点,而不需要单独运行每种测试方法?python unittest2 - 将测试方法名称暴露给设置方法

例子:

class Testing(unittest2.TestCase): 
    def setUp(): 
     # wish i could write: 
     string = getNextTestMethodName() 

    def test_example(self): 
     self.assertNotEqual(0,1) 

回答

0

甚至不self.id():

def setUp(self): 
    logger.info('# setUp for %s' % (self,)) 

典型输出:

# setUp for test_mainframe_has_been_constructed (__main__.BasicFunctionality_FT) 

...,其中 “test_mainframe_has_been_constructed” 是方法。

所以repr(self),想必如果你只是想要字符串 - 然后切片和骰子,观察方法名称以开头括号(或第一个空格)结束。

1

您可以使用self.shortDescription(),这将使你的测试(或与测试相关的文档字符串)的名称,而这一点,即使在setUp/tearDown方法。

编辑:也许self.id()就够了,它只提供测试名称(感谢@Blair)。需要

+1

或[self.id()](http://docs.python.org/library/unittest.html#unittest.TestCase.id),它返回测试用例的名称,通常是名称测试方法。 – Blair

+0

感谢塞德里克和布莱尔,在审查unittest.py后,我意识到,该测试用例包含当前在self._testMethodName中运行的testmethod的名称。这填充我的需要作为ID()不好,因为我有我的测试用例类中的几个testmethods – yuvalshu