Я не думаю, что есть способ сделать это с помощью PyUnit, и я не хотел бы видеть расширение PyUnit таким образом.
Я предпочитаю придерживаться одного утверждения для каждой тестовой функции (или, более конкретно, утверждение одного понятия на тест ) и перезапись test_addition()
в виде четырех отдельных функций теста.Это даст более полезную информацию о сбое, viz :
.FF.
======================================================================
FAIL: test_addition_with_two_negatives (__main__.MathTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_addition.py", line 10, in test_addition_with_two_negatives
self.assertEqual(-1 + (-1), -1)
AssertionError: -2 != -1
======================================================================
FAIL: test_addition_with_two_positives (__main__.MathTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_addition.py", line 6, in test_addition_with_two_positives
self.assertEqual(1 + 1, 3) # Failure!
AssertionError: 2 != 3
----------------------------------------------------------------------
Ran 4 tests in 0.000s
FAILED (failures=2)
Если вы решите, что этот подход не для вас, этот ответ может оказаться полезным.
Обновление
Похоже, что вы тестируете две концепции с вашим обновленным вопросом, и я бы разделил их на два модульных теста.Во-первых, параметры сохраняются при создании нового объекта.Это будет иметь два утверждения, одно для make
и одно для model
.Если первый отказывает, то, что явно необходимо исправить, независимо от того, проходит второй этап или нет, не имеет значения на данном этапе.
Вторая концепция более сомнительна ... Вы проверяете, инициализируются ли некоторые значения по умолчанию, Почему ?Было бы более полезно проверить эти значения в том месте, где они фактически используются (и если они не используются, то почему они там?).
Оба эти теста не пройдены, и оба должны.Когда я занимаюсь модульным тестированием, меня гораздо больше интересует неудача, чем успех, поскольку именно на этом я должен сконцентрироваться.
FF
======================================================================
FAIL: test_creation_defaults (__main__.CarTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_car.py", line 25, in test_creation_defaults
self.assertEqual(self.car.wheel_count, 4) # Failure!
AssertionError: 3 != 4
======================================================================
FAIL: test_creation_parameters (__main__.CarTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_car.py", line 20, in test_creation_parameters
self.assertEqual(self.car.model, self.model) # Failure!
AssertionError: 'Ford' != 'Model T'
----------------------------------------------------------------------
Ran 2 tests in 0.000s
FAILED (failures=2)