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

parameterized
pytest
cli
python
Теги: #<Tag:0x00007f7b64699cb8> #<Tag:0x00007f7b64699b78> #<Tag:0x00007f7b64699a10> #<Tag:0x00007f7b646998d0>

(Ainur Fa) #1

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

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

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


(Михаил Братухин) #2

Не силён в змеином :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


(Ilya Brik) #3

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

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