t.me/atinfo_chat Telegram группа по автоматизации тестирования

параметризация теста значением полученным как аргумент командной строки

Теги: #<Tag:0x00007f748c0b6898> #<Tag:0x00007f748c0b66e0> #<Tag:0x00007f748c0b65c8> #<Tag:0x00007f748c0b6438>

Прошу помочь советом.

Нужно:
Запустить тесты передав аргументы командной строки, типа:
pytest -v check_connect.py --connect=192.168.1.1,192.168.1.2

В check_connect.py есть тест которому нужно передать эти аргументы
@pytest.mark.parametrize(“connect”, [“список параметров”])
Как это реализвать, сломал голову(

Не силён в змеином :snake: но судя по всему ответ где-то тут :point_right:
https://stackoverflow.com/questions/40129833/pytest-how-to-parametrize-a-fixture-based-on-command-line-arguments
https://stackoverflow.com/questions/51071134/parameterizing-pytest-tests-with-fixtures-and-a-command-line-argument
И конечно вот тут ещё:
https://docs.pytest.org/en/latest/parametrize.html
https://docs.pytest.org/en/latest/example/parametrize.html#paramexamples

Ну, вот же, прямо как в доке написано:

conftest.py:

def pytest_addoption(parser):
    parser.addoption("--connect", nargs='+')

def pytest_generate_tests(metafunc):
    if 'connect' in metafunc.fixturenames:
        metafunc.parametrize("connect", metafunc.config.getoption('connect'))
def test_connection(connect):
    if connect == '192.168.1.1':
        assert '192.168.1.1' == connect
    elif connect ==  '192.168.2.1':
        assert '192.168.2.1' == connect
    else:
        assert False

И строка запуска:

python -m pytest test_connection.py --connect 192.168.1.1 192.168.2.1