我正在使用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 和源代码,但如果可能的话,我找不到任何信息。
我会提出拉取请求,但想先检查是否有人知道解决方案。