Итак, у меня были проблемы с моим проектом по тестированию носа, поэтому я выделил проблему и попытался ее выяснить, но у меня осталось какое-то странное поведение. См. Мой скрипт ниже для справки.
from unittest import TestCase
class BaseClass(TestCase):
@classmethod
def setup_class(cls):
print("defining base class stuff")
def assert_something(self, expected, actual):
assert expected == actual, "failed test"
class FirstClass(BaseClass):
@classmethod
def setup_class(cls):
super(FirstClass, cls).setup_class()
print("defining first class stuff")
def test_first_class(self):
self.assert_something(1, 1)
class SecondClass(FirstClass):
@classmethod
def setup_class(cls):
super(SecondClass, cls).setup_class()
print("defining second class stuff")
def test_second_class(self):
self.assert_something(5, 4)
class ThirdClass(SecondClass):
@classmethod
def setup_class(cls):
SecondClass.setup_class()
print("defining third class stuff")
def test_third_class(self):
self.assert_something(13, 13)
сейчас, если я запустил скрипт выше. Я получаю следующий вывод в терминале:
(sandbox_venv) michael@Puter:~/workspace/sandbox$ nosetests -v
test_first_class (test_.FirstClass) ... ok
test_first_class (test_.SecondClass) ... ok
test_second_class (test_.SecondClass) ... FAIL
test_first_class (test_.TestThirdClass) ... ok
test_second_class (test_.TestThirdClass) ... FAIL
test_third_class (test_.TestThirdClass) ... ok
из-за способа, которым я наследую. Очевидно, что они также наследуют тестовые случаи и запускают их снова. Это то, что я имею в виду под «A, AB, AB C» в названии.
Это не требуемая функциональность. Я пытался сделать проект так, чтобы я мог выполнять свои тесты в определенном порядке c, но я также мог сделать каждый тест независимым друг от друга. Таким образом, если бы я запускал только тесты ThirdClass, он запускал бы setup_class () из каждого последующего класса, но не из тестов.