unittest — проверка результата предыдущего теста

#python-3.x #python-unittest

#python-3.x #python-unittest

Вопрос:

У меня есть несколько тестов в моем тестовом костюме, и я хочу проверить результат последнего теста. Какой самый чистый способ это сделать? Это следует примеру:

 def test_01_first(self):
    if condition:
       assert False

def test_02_second(self):
    if first_test_has_failed:
       do_something...
  

Я думал о чем-то вроде атрибута класса (cls.test_failed = 1), но мне это не кажется элегантным.

Ответ №1:

Тесты должны быть написаны таким образом, чтобы их можно было запускать в любом порядке. Мне потребовалось некоторое время, чтобы принять это, но тестирование стало намного проще, когда я это сделал.

Лучше всего использовать разные тестовые классы для разных областей функциональности, чтобы вы могли сузить круг выполняемых тестов, если у вас возникает много сбоев.

Например, один из моих наборов тестов содержит следующие классы:

 class TestPathBasics(TestCase):
    ...

class TestPathStringMethods(TestCase):
    ...

class TestPathFileOperations(TestCase):
    ...
  

Затем из командной строки я могу запустить:

 python -m antipathy.test TestPathBasics
  

для запуска одной группы тестов или даже

 python -m antipathy.test TestPathBasics.test_addition
  

для запуска одного теста.

Чтобы действительно ответить на ваш вопрос: я бы использовал атрибут class, возможно, вместе с декоратором, если бы мне действительно, действительно, абсолютно необходимо было запускать их в определенном порядке и нужно было что-то знать о последнем тесте.