Pytest parametrize удаляет мои fixturedata после первого значения параметризации
У меня есть два приспособления:
@pytest.fixture
def all_users():
all_existing_group_names = Group.objects.all().values_list(
"name", flat=True
)
tmp_list = []
for group_name in all_existing_group_names:
user = User.objects.create(username=f"user-{group_name}",
password=group_name)
group = Group.objects.get(name=group_name)
user.groups.add(group)
tmp_list.append(user)
return tmp_list
и
@pytest.fixture
def admin_user(all_users):
User.objects.all() # is empty the second time
return all_users
Вот как выглядит мой тест
Class TestSomething:
@pytest.mark.parametrize('first_val, second_val', [('test', 'test'), ('test2',
'test2'),..])
@pytest.mark.django_db(transaction=True)
def test_something(self, all_users, first_val, second_val):
...
В моем тесте я удаляю некоторые экземпляры модели через пост-запрос (который в представлении обернут транзакцией.atomic request). Вот почему мне нужна transaction=True, потому что удаленные объекты должны быть снова там, когда запускается второй запуск параметризации.
Теперь, моя проблема в том, что если я использую transaction=True, при втором запуске он пересматривает мои фикстуры, но теперь внезапно моя база данных пуста, метод Groups.objects.all() вообще ничего не возвращает.
Если я переключаюсь обратно на transaction=False, все работает, но в этом случае у меня возникает проблема, потому что мой пост-запрос удаляет материал, который мне нужен для следующего запуска параметризации.
Что я делаю не так? Я не понимаю :( ughhh