2

我正在使用testinfra来测试某些服务是否在不同的节点上运行/启用。Testinfra 可以使用 ansible 让节点进行测试,它还将使 ansible 组可用。Testinfra 使用pytest

我只想在极少数的 ansible 组上测试服务,代码如下所示。

import pytest
import testinfra

group_service_map = [
    ('group1', 'svc1'),
    ('group1', 'svc2'),
    ('group2', 'svc3')
]

@pytest.fixture
def host_groups(host):
    return host.ansible.get_variables()['group_names']

@pytest.mark.parametrize('check', ('running', 'enabled'))
@pytest.mark.parametrize('group, service', group_service_map)
def test_service_running(host, check, host_groups, group, service):
    if group in host_groups:
        assert getattr(host.service(service), f'is_{check}') is True, f'{service} is not {check}'

这很好用,除了调用我passing每次得到 1 个测试的pytest 东西test_service_running(这是很多,因为这是一个参数化测试)。我尝试添加一个pytest.skip(),但随后 pytest 将测试显示为已跳过(黄色s)。

目标是忽略输出中的测试,而不仅仅是跳过它。所以不是绿色或黄色.,我什么都不想要。

我已经阅读了 api-docs 和源代码,但如果可能的话,我找不到任何信息。

我会提出拉取请求,但想先检查是否有人知道解决方案。

4

0 回答 0