Как добиться персистенции данных базы данных с помощью фабрик в pyTest в Django?

Я знаю, что когда мы создаем запись в тестовой базе данных внутри первого тестового случая, она недоступна из второго тестового случая.

Если мы используем приспособление, то приспособление будет запускаться перед каждым тестовым случаем, и новая запись в базе данных будет сгенерирована и предоставлена каждому тестовому случаю.

У меня есть фабрика, определенная следующим образом:

import factory
from faker import Faker
fake = Faker()
from django.contrib.auth.models import User

class UserFactory(factory.django.DjangoModelFactory):

    class Meta:
        model = User

    username = fake.name()

который используется приспособлением, определяемым как:

import pytest
from django.contrib.auth.models import User
from pytest_factoryboy import register
from tests.factories import UserFactory

register(UserFactory)

@pytest.fixture
def user_creation_through_fixture(db, user_factory):
    user = user_factory.create(username="persist")
    return user

и 2 тестовых случая, определенных как:

import pytest


def test1(user_creation_through_fixture):
    print(user_creation_through_fixture)
    assert True


def test2(user_creation_through_fixture):
    print(user_creation_through_fixture)
    assert True

как я могу применить что-то вроде @pytest.fixture(scope="session") к фикстуре ?

так, чтобы во время 1-го тестового случая при запуске приспособления в базе данных была создана новая запись пользователя, а затем во время 2-го тестового случая при запуске приспособления эта же запись пользователя была предоставлена 2-му тестовому случаю.

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