Django: повторите тест-кейс с разными приспособлениями
У меня есть Django TestCase, все тесты которого я хотел бы запустить для двух различных наборов данных (в данном случае объект Bike, цвет которого может быть красным или синим).
Выбираю ли я способ загрузки разных светильников или тех же светильников и манипулирую цветом, у меня нет предпочтений.
Смотрите пример ниже:
class TestBike(TestCase):
fixtures = [
"testfiles/data/blue_bike.json",
]
def setUp(self, *args, **kwargs):
self.bike = Bike.objects.get(color="blue")
run_expensive_commands(self.bike)
def test_bike_1(self):
# one of many tests
def test_bike_2(self):
# second of many tests
Одним из способов, который я рассматривал, было использование пакета parameterized
, но тогда мне пришлось бы parameterize
каждый тест и вызывать prepare()
функцию из каждого теста. Звучит как куча излишеств.
Другой вариант - многократное наследование теста с различными приспособлениями. Тоже слишком многословный, на мой вкус.
Рассматривали ли вы возможность параметризации на уровне класса, т.е. через атрибут класса?
class TestBikeBase:
COLOR = "" # Override in derived class.
def setUp(self, *args, **kwargs):
self.bike = Bike.objects.get(color=self.COLOR)
run_expensive_commands(self.bike)
def test_bike_1(self):
# one of many tests
def test_bike_2(self):
# second of many tests
class TestRedBike(TestBikeBase, TestCase):
COLOR = "red"
class TestBlueBike(TestBikeBase, TestCase):
COLOR = "blue"