Скажем, у меня есть простой инструмент, подобный следующему (используя pytest-django, но я думаю, что он должен применяться и к pytest):
@pytest.fixture
def my_thing(request, db):
thing = MyModel.objects.create()
request.addfinalizer(lambda: thing.delete())
return thing
Это отлично работает, когда мои тесты нуждаются в одном экземпляре MyModel. Но как насчет того, нужны ли мне два (или три или четыре)? Я хочу, чтобы каждый экземпляр отличался, но настраивался таким же образом.
Я мог бы скопировать/вставить код и переименовать функцию привязки, но это кажется неэлегантным.
Аналогично, я пробовал:
@pytest.fixture
def my_thing_1(my_thing):
return my_thing
@pytest.fixture
def my_thing_2(my_thing):
return my_thing
Однако каждый из них возвращает тот же экземпляр MyModel.
Есть ли способ сделать то, что я хочу, используя встроенные функции pytest? В качестве альтернативы, я мог бы переместить установку/отключение моего прибора в вспомогательные функции, чтобы я не дублировал слишком много кода.
Или я все это неправильно делаю?