[Python] What is pytests equivalent to setUpTestData in Django?

Discussão em 'Python' iniciado por Stack, Janeiro 29, 2025.

  1. Stack

    Stack Membro Participativo

    I have seen TestCase.setUpTestData which improves test speed quite a bit in my case.

    I typically prefer pytest fixtures instead of the TestCase classes. However,when I make a session-scope fixture which does data preparation needed for all tests with the fixture, I get


    RuntimeError: Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it.
    ​

    I followed https://stackoverflow.com/a/72261942/29412366, but that had no effect.

    How can I store and re-use a DB state within a Django application when testing using pytest?

    I use an in-memory sqlite3 DB.

    I tried https://stackoverflow.com/a/72261942/29412366 :

    @pytest.mark.django_db
    @pytest.fixture(scope='session')
    def thing(django_db_setup, django_db_blocker):
    del django_db_setup # Cannot be used with usefixtures(..) it won't work
    with django_db_blocker.unblock():
    print('sleeping')
    Thing.objects.create(thing='hello')


    and expected the test to run successfully + save time. Instead, I got the RuntimeError mentioned above.

    (function-scoped fixtures work fine, but then I don't save any test execution time)

    Continue reading...

Compartilhe esta Página