【问题标题】:How to get currently running testcase name from testsuite in unittest如何从单元测试中的测试套件获取当前正在运行的测试用例名称
【发布时间】:2011-12-09 11:49:22
【问题描述】:

如何获得当前运行的测试用例名称,而在测试套件集合中有 16 个测试用例。测试按顺序执行(按照将测试添加到 testSuite 集合的顺序)。当我将所有测试添加到 testSuite 集合时,我可以预览该对象,但是如何在测试运行时获取当前正在执行的测试。也许某个变量保存了这些信息?

示例:

def suite():
    testSuite= unittest.TestSuite()
    testSuite.addTest(FlightsTestCases('test_sel__reservation_one_way_wizzair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_wizzair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_round_wizzair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_tair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_round_tair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_wizzair_credit_card'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_tair_credit_card'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_round_wizzair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_wizzair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_easyjet_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_ryanair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_round_ryanair_credit_card'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_tair_duplicated'))
    testSuite.addTest(FlightsTestCases('test_reservation_wrong_card_lowcost'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_tair_credit_card'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_tair_wrong_credit_card'))

    return testSuite

if __name__ == "__main__":
    result = unittest.TextTestRunner(verbosity=2).run(suite())
    sys.exit(not result.wasSuccessful())

使用 Selenium-RC 框架执行测试。

【问题讨论】:

  • 您要在什么上下文中查询正在运行的测试名称?

标签: python unit-testing selenium


【解决方案1】:

unittest.TestCase.shortDescription()

返回测试的描述,如果没有提供描述,则返回 None。此方法的默认实现返回测试方法的文档字符串的第一行(如果可用)或无。

unittest.TestCase.id()

返回一个标识特定测试用例的字符串。这通常是测试方法的全名,包括模块和类名。

希望其中之一对您的需求有用。

【讨论】:

    【解决方案2】:

    unittest.TestCase._testMethodName

    示例代码:

    import unittest
    
    
    class BasicTests(unittest.TestCase):
    
        def test_print(self):
            print(self._testMethodName)
    

    【讨论】:

    • 如果您在测试中,您知道当前函数的名称。当您不在功能中时,更难处理。您可以使用 inspect.stack()[0][3]。这适用于当前函数,但堆栈中的位置可以是动态的,并且您想要的函数可能比当前调用高一些动态计数。对于单元测试,test_xxx() 可能会高 1 到 10 个级别。
    • 这是在 setUptearDown... 中工作的...这是我一直在寻找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 2012-01-12
    • 2020-01-16
    • 1970-01-01
    相关资源
    最近更新 更多