Я использую python
framework unittest
. Можно ли указать способностями структуры тайм-аут для теста? Если нет, можно ли изящно указать timeout
для всех тестов, а для некоторых отдельных тестов - личное значение для каждого из них?
Я хочу определить global timeout
для всех тестов (они будут использовать его по умолчанию) и тайм-аут для некоторого теста, который может занять много времени.
Как указать время ожидания проверки для python unittest?
Ответ 1
Насколько я знаю, unittest
не содержит поддержки тайм-аутов тестов.
Вы можете попробовать timeout-decorator
библиотеку из PyPI. Примените декоратор к индивидуальным тестам, чтобы они прекратили работу, если они занимают слишком много времени:
import timeout_decorator
class TestCaseWithTimeouts(unittest.TestCase):
# ... whatever ...
@timeout_decorator.timeout(LOCAL_TIMEOUT)
def test_that_can_take_too_long(self):
sleep(float('inf'))
# ... whatever else ...
Чтобы создать глобальный тайм-аут, вы можете заменить вызов
unittest.main()
с
timeout_decorator.timeout(GLOBAL_TIMEOUT)(unittest.main)()