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

Как указать время ожидания проверки для python unittest?

Я использую python framework unittest. Можно ли указать способностями структуры тайм-аут для теста? Если нет, можно ли изящно указать timeout для всех тестов, а для некоторых отдельных тестов - личное значение для каждого из них?
Я хочу определить global timeout для всех тестов (они будут использовать его по умолчанию) и тайм-аут для некоторого теста, который может занять много времени.

4b9b3361

Ответ 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)()