pytest-тайм-аут плагін для py.test, які будуть припинити випробування після певного часу, і NBSP ;. При цьому ви отримаєте дамп стека всіх потоків, що виконуються в той час. Це корисно, коли, наприклад, ходові випробування при безперервному інтеграції (CI) сервера.
Використання
Встановіть за допомогою:
пункт встановити pytest тайм-ауту
а потім включити плагін, або з командного рядка:
py.test -p тайм-аут
або більш зручно з в тестовий модуль або conftest.py:
pytest_plugins = 'тайм-аут'
Ви можете змінити тайм-аут, використовуючи --timeout параметр, який встановлює тайм-аут в секундах.
Як це працює
Цей плагін працює в одному з двох способів. Якщо система підтримує сигнал SIGALRM тривоги будуть заплановані при запуску тестів і скасовується, коли він закінчить. Якщо сигнал минає під час тесту обробник сигналу буде використовувати pytest.fail (), щоб перервати тест після того, як кинув пачку якихось інших потоків, що виконуються в стандартний потік помилок.
Якщо система не підтримує SIGALRM або --nosigalrm варіант був використаний, то потік таймера буде використовуватися замість цього. Ще раз, якщо цей таймер не буде скасовано до закінчення терміну його дії він буде скидати стек всіх потоків в стандартний потік помилок, перш ніж перервати весь процес py.test допомогою os._exit (1).
Недоліком способу є те, що SIGALRM сигнал, використовуваний в рамках тесту. Якщо цей сигнал використовується в коді тестируемой вам потрібно буде використовувати --nosigalrm варіант. Обмеження потік таймера, однак, додаткові накладні витрати створення потоку для кожної виконаної перевірки і той факт, що після одного тайм-ауту весь процес зупиняється і ніякі подальші випробування не виконуються.
Що таке новий У цьому випуску :.
- Додана змінна PYTEST_TIMEOUT середовища як спосіб вказівки тайм-аут (закриває випуск # 2)
- Більш гнучкий маркер аналізі аргументів :. Тепер ви можете задати метод з використанням позиційного аргумент
- плагін тепер включений за замовчуванням. Існує більше не потрібно вказувати тайм-аут = 0 у файлі конфігурації або в командному рядку просто так, що маркер буде працювати.
Що нового у версії 0.2:
- Додати маркер, щоб змінити час затримки показу з помощьюpytest .timeout (N) Синтаксис, завдяки Лоран Brack для вихідного коду.
- Дозволити маркер тайм-аут, щоб вибрати метод тайм-ауту за допомогою аргументу метод ключових слів.
- Перейменувати --nosigalrm можливість --method = нитка до майбутнього підтримка докази для eventlet і gevent. Завдяки Ронні Pfannschmidt за підказку.
- Додати тайм-аут і timeout_method елементи в файлі конфігурації, так що ви можете включити і налаштувати плагін за допомогою INI-файл. Завдяки Хольгер Krekel і Ронні Pfannschmidt для підказок.
- тестування (і фіксовані) для Python 2.6, 2.7 та 3.2.
Вимоги
- Python
- py.test
Коментар не знайдено