Мне нужно проверить комбинацию двух параметров, каждый из которых имеет только несколько возможностей. Итак, я хочу иметь иерархию классов, в которой каждый подкласс имеет свой собственный фиксированный параметр A, а параметр B можно протестировать на основе этого общего параметра A. Я хочу полиморфировать методы тестирования в тестовом примере с точки зрения сдвига параметра A, так что мне не нужно переписывать методы тестирования для каждого тестируемого подкласса, но при этом могут быть вариации в тестах подклассов.
Однако я обнаружил, что если я объявлю атрибут в setUp(self). атрибут self.A
не получает подкласса. Это означает, что все мои подклассы имеют одинаковое значение self.A из первого тестового примера (родительский класс). Также все мои testSomething(self)
методы не являются виртуальными! Значение со следующей иерархией:
class baseTest(unittest.TestCase):
def setUp(self):
print('base setup')
self.A = 100
def testSomething(self):
print('base test')
# Do something with self.A
class subTest(baseTest):
def setUp(self):
print('sub setup')
self.A = 999
def testSomething(self):
print('sub test')
# Do something with self.A
EDIT: я поместил оба класса в один файл и полагался на unittest.main(), запущенный в if __name__ == "__main__"
Запуск этого файла дает мне:
base setup
base test
base setup
base test
Я думал, что все методы Python виртуальны, но в unittest это не так.
Что я должен делать?