Py.test跳过消息不会显示在jenkins中

时间:2013-09-18 08:25:40

标签: python unit-testing jenkins pytest

我在使用py.test进行单元测试时遇到了一个小问题。

我使用py.test来运行测试并输出junitxml测试报告。 这个xml报告在jenkins中导入并生成很好的统计信息。

当我使用派生自unittest.TestCase的测试类时, 我使用以下方法跳过预期的失败:

  

@ unittest.skip(“Bug 1234:这不起作用”)

选择此测试时,此消息也会显示在jenkins中。

当我不使用unittest.TestCase类时,例如使用py.test参数化功能, 我使用以下方法跳过预期的失败:

  

@ pytest.mark.xfail(reason =“Bug 1234:这不起作用”,run = False)

但是这个原因实际上并没有在詹金斯中显示出来,而是会说:

  

跳过消息

     

预期的测试失败

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

我使用这一行解决了它作为测试的第一行:

  

pytest.skip(“Bug 1234:这不起作用”)

我宁愿使用其中一个pytest装饰器,但这样做。

答案 1 :(得分:1)

我有一个类似的问题,除了我有一个不同的Jenkins消息,并且无法分辨哪个测试被跳过。

事实证明,如果模块中唯一的测试是跳过测试,那么jenkins就不会在测试结果列表中显示测试(使用装饰器或jr-be的解决方案)。您可以看到在总结果中有一个跳过的测试,但无法确定跳过的测试所在的测试或模块。

为了解决这个问题(确定黑客解决方案),我回到我的测试中使用装饰器并添加了一个虚拟测试(因此有1个测试运行,1个测试被跳过):

@pytest.skip('SONIC-3218')
def test_segments_create_delete(self, api):
    logging.info('TestCreateDeleteSegments.test_segments_create_delete')

def test_dummy(self, api):
    '''
    Dummy test to see if suite will display in jenkins if one
    test is run and 1 is skipped (instead of having only skipped tests)
    '''
    logging.info('TestCreateDeleteSegments.test_dummy')

对我而言,因为我宁愿进行一次额外的虚拟测试,也能找到我跳过的测试。