python unittest2 - 将测试方法名称暴露给设置方法

2 投票
2 回答
791 浏览
提问于 2025-04-17 08:16

我想在每个测试运行之前,找到即将执行的测试方法的名字,这个操作是在unittest的SetUp()方法中进行的。有没有办法在不单独运行每个测试方法的情况下做到这一点呢?

举个例子:

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

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

2 个回答

1

你可以使用 self.shortDescription() 这个方法,它会告诉你测试的名称(或者和测试相关的说明文字),而且这个方法在 setUp/tearDown 方法中也可以使用。

补充一下:也许 self.id() 方法就够了,它只提供测试的名称(感谢 @Blair 的提醒)。

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 ),然后根据需要进行切割,注意方法名是以左括号(或者第一个空格)结尾的。

撰写回答