#python #pytest
#python #pytest
Вопрос:
Среди тысяч тестовых примеров в проекте, над которым я работаю, есть (около 10) тестов, которые с большой вероятностью завершатся неудачей (потому что они тестируют что-то, что можно легко взломать). Чтобы тесты быстро завершались неудачей, я хотел бы запустить их первыми.
Я знаю, --failed-first
и плагин для упорядочивания — оба полезны, но не полностью соответствуют моим требованиям: Я бы хотел, чтобы pytest знал обо всех тестах, которые не выполнялись в прошлом, а не только в последнем запуске, и было бы здорово позволить pytest обнаруживать эти случаи (вместо того, чтобы указывать их вручную.
Итак, есть ли подход, который можно выполнить --failed-most-often-in-the-past
?
Как вы это делаете?
Текущий подход
Вручную собирая неудачные тесты, вы можете запустить их первыми, просто поместив их перед теми, которые вы хотите запустить:
time pytest -x tests/some/generic/test_file.py::failing_test tests
намного быстрее, чем
time (pytest -x tests/some/generic/test_file.py::failing_test; pytest -x tests)
Теперь вы можете автоматически собирать неудачные тесты и добавлять их в файл:
pytest -x $(cat failing_tests.txt) tests
Комментарии:
1. Вы можете использовать pytest-sorter pypi.org/project/pytest-sorter плагин. Он запускает ваш тест от наиболее вероятного сбоя до менее вероятного сбоя. Он также записывает историю тестов в файл .test_history для проверки. Вы можете легко написать пользовательские хуки поверх него в соответствии с вашими конкретными потребностями.