Подтвердить что ты не робот

Как ускорить py.test

Есть ли способ ускорить повторное выполнение py.test? Кажется, что он тратит много времени на сбор тестов, даже если я укажу, какие файлы выполнять в командной строке. Я знаю, что это не проблема с дисковой скоростью либо с момента запуска pyflakes во всех файлах .py очень быстро.

4b9b3361

Ответ 1

Использование опции norecursedirs в pytest.ini или tox.ini может сэкономить много времени для сбора, в зависимости от того, какие другие файлы у вас есть в вашем рабочем каталоге. Мое время сбора примерно вдвое меньше для набора из 300 тестов, когда он у меня есть (0,34 с против 0,64 с).

Если вы уже используете tox, как я, вам просто нужно добавить следующее в ваш tox.ini:

[pytest]
norecursedirs = docs *.egg-info .git appdir .tox

Вы также можете добавить его в автономный файл pytest.ini.

Документация pytest содержит более подробную информацию о файлах конфигурации py.test.

Ответ 2

У меня была такая же проблема, когда я вызывал py.test в корень моего проекта, а мои тесты были три подкаталога вниз. Сбор составлял 6-7 секунд до 0,4 секунды фактического выполнения теста.

Моим решением вначале было называть py.test относительным путем к тестам:

py.test src/www/tests/

Если это ускорит вашу коллекцию, вы можете добавить относительный путь к тестам в конец параметра addopts в pytest.ini - например:

[pytest]
addopts = --doctest-glob='test_*.md' -x src/www/tests/

Это привело к тому, что коллекция + время выполнения сократилось примерно до секунды, и я все равно мог просто вызвать py.test, как и раньше.

Ответ 3

С xdist вы можете распараллелить прогоны py.test. Это позволяет даже отправлять тесты на удаленные компьютеры. Зависит от вашей настройки, это может ускориться совсем немного:)

Ответ 4

В специальном случае, когда вы работаете под cygwin python, его обработка файлов в стиле unix выполняется медленно. См. тест pytest.py с очень медленным запуском в cygwin для того, чтобы ускорить работу в этой особой ситуации.

Ответ 5

Если у вас запущено антивирусное программное обеспечение, попробуйте отключить его. У меня была такая же проблема. Сбор тестов проходил невероятно медленно. Это оказалось моим антивирусным программным обеспечением (Avast), которое вызывало проблему. Когда я отключил антивирусное программное обеспечение, коллекция тестов работала примерно в пять раз быстрее. Я тестировал его несколько раз, включив и выключил антивирус, поэтому я не сомневаюсь, что это было причиной в моем случае.