Добавить параметр pytest без тире?

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

Я использую волшебные команды pytest от 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, вам нужно написать полноценный плагин.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
141
1

Ответы 1

Вы можете отмечать свои тесты и запускать только те, которые отмечены какой-либо отметкой.

Например:

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

Но тогда я должен сделать -m! Была надежда, что вообще не придется ставить перед ним черту ...

Schilcote 01.05.2018 20:17

Извините, но я не знаю. В чем проблема с тире? Я думал только о чем-то, что «не требует написания полноценного плагина pytest, который отменяет синтаксический анализ параметров». Это то, что уже реализовано в pytest.

Rafael 01.05.2018 20:26

Рывок - это всего лишь немного ненужного трения. Это похоже на то, как ipython дает вам возможность вызывать функции без скобок после них; необходимость ввести один лишний символ, который на самом деле ничего не означает, приводит к значительному разочарованию (и ошибкам), если это связано с чем-то, что вы должны делать все время. В любом случае спасибо за попытку. :П

Schilcote 01.05.2018 20:30

Другие вопросы по теме