pytest - игнорировать тест, а не просто пропускать - PullRequest
1 голос
/ 29 мая 2020

Я использую 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}'

Это отлично работает, за исключением того, что pytest вещи, которые я получил 1 passing test каждый раз, когда вызывается test_service_running (что много, поскольку это параметризованный тест). Я попытался добавить pytest.skip(), но затем pytest показывает тесты как пропущенные (желтый s).

Цель состоит в том, чтобы игнорировать тест в выводе, а не просто пропустить его. Поэтому вместо зеленого или желтого . мне ничего не нужно.

Я читал api-docs и в исходном коде, но не могу найти никакой информации, если это вообще возможно.

Я сделаю pull-реквест, но сначала хочу проверить, знает ли кто-нибудь о решении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...