Друк термінів виконання тестів та виправлення повільних тестів з py.test


118

Я виконую одиничні тести на сервері CI за допомогою py.test. Тести використовують зовнішні ресурси, отримані по мережі. Іноді тестовий бігун займає занадто багато часу, внаслідок чого тестовий бігун переривається. Я не можу повторити проблеми локально.

Чи є спосіб зробити py.test роздрукувати час виконання (повільного) тесту, щоб виправити проблемні тести стало простіше?

Відповіді:


172

Я не впевнений, що це вирішить вашу проблему, але ви можете перейти --durations=Nдо друку найповільніших Nтестів після закінчення тестового набору.

Використовуйте --durations=0для друку всіх.


88
Якщо ви пройдете --durations=0час виконання для всіх тестів, буде повідомлено.
oLas

Чи знаєте ви, чи є можливість додати його до створеного звіту про покриття HTML? Подібне, як додавання .coveragercфайлу із вмістом [run] branch = Trueдодає інформацію про розгалуження покриття?
Мартін Тома

Вам потрібно буде додати цю інформацію самостійно, pytest-html має підтримку, щоб вставити додатковий вміст.
Бруно Олівейра,

4
@oLas: Це неправда: якщо тести "занадто швидкі", вимірюваний час, мабуть, може стати 0, і вони все одно відфільтруються. Негативний поріг також не допомагає в цьому випадку. Ще одне роздратування при такому підході полягає в тому, що пітест завжди надрукує, (0.00 durations hidden. Use -vv to show these durations.)що не має ніякого сенсу.
bluenote10

17

Ви можете передавати номер за допомогою --durations

pytest --durations=0 — Show all times for tests and setup and teardown

pytest --durations=1 — Just show me the slowest

pytest --durations=50 — Slowest 50, with times,  etc

Слідкуйте за посиланням: https://medium.com/@brianokken/pytest-durations-0-show-all-times-for-tests-and-setup-and-teardown-848dccac85db

Або: https://docs.pytest.org/en/latest/usage.html#profiling-test-execution-duration

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.