Python Glossary English

все Python 3unittestфункция

unittest.expectedFailure()

пропуск тестов

Декоратор, помечающий тест как заведомо падающий: его провал не портит прогон, а неожиданный успех считается проблемой.

Синтаксис

@unittest.expectedFailure
def test_known_bug(self): ...

Метка для известного, ещё не исправленного бага. Ловушка: когда баг починили, тест начинает проходить и даёт «unexpected success», а с Python 3.4 это делает wasSuccessful() ложным — прогон краснеет, и декоратор надо снять. Он ловит любое исключение, а не только AssertionError, поэтому опечатка внутри теста тоже сойдёт за «ожидаемый провал».

Примеры

import unittest
class Tests(unittest.TestCase):
    @unittest.expectedFailure
    def test_known_bug(self):
        self.assertEqual(round(2.5), 3)
    @unittest.expectedFailure
    def test_already_fixed(self):
        self.assertEqual(round(3.5), 4)
result = unittest.TestResult()
unittest.TestLoader().loadTestsFromTestCase(Tests).run(result)
print(len(result.expectedFailures), len(result.unexpectedSuccesses))  # → 1 1
print(result.wasSuccessful())  # → False

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности