#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, возможно, вместе с декоратором, если бы мне действительно, действительно, абсолютно необходимо было запускать их в определенном порядке и нужно было что-то знать о последнем тесте.