1

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

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

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

@unittest.skip("错误 1234:这不起作用")

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

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

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

但是这个原因实际上并没有显示在 jenkins 中,而是会说:

跳过消息

预期的测试失败

我怎样才能解决这个问题?

4

2 回答 2

2

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

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

我宁愿使用 pytest 装饰器之一,但这会做。

于 2013-09-19T12:43:29.190 回答
1

我遇到了类似的问题,只是我收到了不同的 Jenkins 消息并且无法判断跳过了哪个测试。

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

为了解决这个问题(ok hack solve),我回到在我的测试中使用装饰器并添加了一个虚拟测试(所以有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')

对我来说,这是可行的,因为我宁愿进行 1 个额外的虚拟测试并且能够找到我跳过的测试。

于 2014-11-21T14:57:49.177 回答