如何在unittest中从testsuite获取当前运行的测试用例名称

fal*_*cin 21 python selenium unit-testing

我如何获得当前运行的测试用例名称,而在testsuite集合中有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())
Run Code Online (Sandbox Code Playgroud)

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

Cod*_*ess 57

unittest.TestCase.shortDescription()

返回测试的描述,如果没有提供描述,则返回None.此方法的默认实现返回测试方法的docstring的第一行(如果可用)或None.

unittest.TestCase.id()

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

希望其中一个对您的需求有用.


pba*_*ski 5

unittest.TestCase._testMethodName

示例代码:

import unittest


class BasicTests(unittest.TestCase):

    def test_print(self):
        print(self._testMethodName)
Run Code Online (Sandbox Code Playgroud)

  • 如果您在测试中,您就会知道当前函数的名称。当您不在更难处理的功能中时。你可以使用inspect.stack()[0][3]。这适用于当前函数,但堆栈中的位置可以是动态的,并且您想要的函数可能高于当前调用的某个动态计数。对于单元测试, test_xxx() 可以高 1 到 10 个级别。 (2认同)
  • 这是在 `setUp` 和 `tearDown` 中工作的......这就是我一直在寻找的。 (2认同)
  • 一般不建议直接访问私有财产。通过 `unittest.TestCase.id()` 使用它。例如:`self.id().split('.')[-1]` (2认同)