Выбор утверждений в рамках юнит-тестов

В то время как Python имеет assert заявление , каркас модульного тестирования Python имеет лучшие утверждения специализированные для испытаний: они более информативны по отказам, и не зависят от режима отладки Казни в.

Может быть , самое простое утверждение assertTrue , который может быть использован , как это:

 import unittest

class SimplisticTest(unittest.TestCase):
    def test_basic(self):
        self.assertTrue(1 + 1 == 2)

 

Это будет работать нормально, но заменив строку выше

         self.assertTrue(1 + 1 == 3)

 

не удастся.

assertTrue утверждение вполне вероятно , наиболее общее утверждение, так как что - то испытания могут быть отлиты как некоторые логическое условие, но часто есть лучшие альтернативы. При проверке на равенство, как указано выше, лучше написать

         self.assertEqual(1 + 1, 3)

 

Когда первое не удается, сообщение

 ======================================================================

FAIL: test (__main__.TruthTest)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "stuff.py", line 6, in test

    self.assertTrue(1 + 1 == 3)

AssertionError: False is not true

 

но когда последний терпит неудачу, сообщение

 ======================================================================

FAIL: test (__main__.TruthTest)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "stuff.py", line 6, in test

    self.assertEqual(1 + 1, 3)
AssertionError: 2 != 3

 

который является более информативным (он фактически оценил результат левой стороны).

Вы можете найти список утверждений в стандартной документации . В целом, хорошая идея - выбрать утверждение, наиболее точно соответствующее условию. Таким образом, как показано выше, утверждать , что 1 + 1 == 2 , лучше использовать assertEqual , чем assertTrue . Точно так же, утверждать , что a is None , то лучше использовать assertIsNone , чем assertEqual .

Отметим также, что утверждения имеют отрицательные формы. Таким образом assertEqual имеет отрицательное партнерское assertNotEqual и assertIsNone имеет отрицательное партнерское assertIsNotNone . Еще раз, использование отрицательных аналогов при необходимости приведет к более четким сообщениям об ошибках.