Pytest: Отменить тесты
С помощью pytest можно отметить тесты с помощью декоратора
@pytest.mark.slow
def some_slow_test():
pass
Затем из командной строки можно сказать, что pytest пропускает тесты с отметкой "медленный"
pytest -k-slow
Если у меня есть дополнительный тег:
@pytest.mark.long
def some_long_test()
pass
Я бы хотел пропустить как длинные, так и медленные тесты. Я пробовал это:
pytest -k-slow -k-long
и это:
pytest -k-slow,long
И ни один из них не работает.
В командной строке, как я могу сказать pytest пропустить как медленные И длинные тесты?
Ответы
Ответ 1
Кроме того, с недавним добавлением опции командной строки "-m" вы должны иметь возможность писать:
py.test -m "not (slow or long)"
IOW, параметр "-m" принимает выражение, которое может использовать маркеры в виде логических значений (если маркер не существует в тестовой функции, значение False, если оно существует, оно равно True).
Ответ 2
Просмотр кода pytest
(mark.py
) и дальнейшие эксперименты показывают, что, похоже, работает:
pytest -k "-slow -long"
(Использование опции --collect-only
ускоряет эксперименты)
Ответ 3
Также можно уложить декодеры меток.
@pytest.mark.slow
@pytest.mark.main
def test_myfunction():
pass
Затем я назвал py.test -m "slow and main"
, и были вызваны только тесты с обоими декораторами.
py.test -m "not (slow and main)"
привели к тому, что другие тесты выполнялись