Pytest параметризовать тесты с помощью прибора - PullRequest
2 голосов
/ 11 марта 2020

Я хочу параметризовать свои тесты с помощью файлов конфигурации, что означает, что я не могу использовать синтаксис:

@pytest.fixture(
    params=[
        None,
        '172.16.xxx.xxx',
        '172.16.xxx.xx',
        '172.16.xxx.xxx',
        '172.16.xxx.xx'
    ],
    ids=[
        'Local',
        'Windows10',
        'Centos7.6',
        'Ubuntu18.04',
        'Mojave'
    ],
    scope='module'
)
def endpoint(request) -> str:
    yield request.param

Так что мне нужно что-то вроде этого:

@pytest.fixture(scope='module')
def endpoint(request) -> str:
    hosts = get_hosts_for_module(request.fspath, request.session.startdir)
    ...

    for host in hosts:
        host.setup_for_test()
        yield host.ip
        host.teardown_for_test()

Это работает каждый тест len(hosts) раз, каждый раз с другим значением endpoint. Приведенный выше синтаксис, похоже, не работает, и он запускает тесты только для первого хоста в hosts.

Есть идеи, какой здесь правильный синтаксис?

...