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

Вернуться на верх