Добавить опцию pytest, у которой нет тире? - PullRequest
0 голосов
/ 01 мая 2018

У меня много тестов, которые требуют много времени для запуска. К счастью, время, затраченное на эти тесты, равномерно распределяется между тестами для нескольких подсистем моего проекта.

Я использую магические команды pyython для IPython. Я хотел бы иметь возможность просто сказать что-то вроде

pytest potato_peeler --donttesti18n --runstresstests 

или

pytest garlic_squeezer --donttestsmell --logperfdata

но я не могу добавить опции garlic_squeezer и potato_peeler так же, как я logperfdata и др., Потому что parser.addoption расстраивается, если имя опции не начинается с -- .

Я знаю, что это кажется крошечным неудобством, но у меня есть тонна людей, проводящих эти тесты несколько раз в день, и мне бы хотелось, чтобы их вызывали как можно больше смысла, подражая тому, как вы задаете вопрос. команды в командной строке (команда, что вы хотите запустить команду, затем --flags.)

Есть ли способ иметь не пунктирные опции ? (что не подразумевает написание полноценного плагина Pytest, который отменяет анализ параметров?)

Я надеялся использовать pytest_commandline_parse хук, но вы не можете использовать этот хук в conftest.py, вам нужно написать полноценный плагин.

1 Ответ

0 голосов
/ 01 мая 2018

Вы можете пометить свои тесты и запустить только те, у которых есть какая-то отметка.

Например:

import pytest

@pytest.mark.runstresstests
def test_stress_something():
    pass

@pytest.mark.logperfdata
def test_something_quick():
    pass

...

Если вы хотите запустить только стресс-тесты: pytest -m runstresstests

Полная документация на https://docs.pytest.org/en/latest/example/markers.html

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