Передайте единичный тест Python, если исключение не вызвано

В unittest Python есть ли способ пройти единичный тест, если исключение не было создано, а в противном случае с AssertRaise сбой?

  • Почему утверждения в unittest используют TestCase.assertEqual, а не ключевое слово assert?
  • Проверка Django: см. Traceback, где создается неправильный ответ
  • Mocking __init __ () для унитаза
  • Проблема с модулем тестирования с assertRaises
  • Разница между setUpClass и setUp в Python unittest
  • Как правильно использовать assertRaises unit-testing с объектами NoneType?
  • Assert / VerifyElementPresent с Python и WebDriver?
  • ValueError: нет такого метода тестирования в <class 'myapp.tests.SessionTestCase'>: runTest
  • 3 Solutions collect form web for “Передайте единичный тест Python, если исключение не вызвано”

    Если я правильно понял ваш вопрос, вы могли бы сделать что-то вроде этого:

     def test_does_not_raise_on_valid_input(self): raised = False try: do_something(42) except: raised = True self.assertFalse(raised, 'Exception raised') 

    … предполагая, что у вас есть соответствующий тест, который, конечно же, получает неверное значение Exception :

     def test_does_raise_on_invalid_input(self): self.assertRaises(OutOfCheese, do_something, 43) 

    Однако, как указано в комментариях, вам нужно рассмотреть, что именно вы на самом деле тестируете. Вероятно, тест вроде …

     def test_what_is_42(self): self.assertEquals(do_something(42), 'Meaning of life') 

    … лучше, потому что он проверяет желаемое поведение системы и сбой при возникновении исключения.

    Многие комментарии на этой странице относятся к ошибкам и ошибкам как эквивалентные, а это не так. Правильное решение, на мой взгляд, заключается в явном отказе в тестировании, если возникло исключение. Например:

     def test_does_not_error(self): try: code_under_test() except ThatException: self.fail("code_under_test raised ThatException") 

    Как отмечается в комментарии Свена, просто позвоните в свою функциональность, например do_something() . Если возникает необработанное исключение, тест автоматически терпит неудачу! На самом деле нет причин делать что-либо еще. Это также является причиной, по которой assertDoesNotRaise() не существует.

    Python - лучший язык программирования в мире.