pytest-redis icon indicating copy to clipboard operation
pytest-redis copied to clipboard

Session-scoped redisdb

Open Seluj78 opened this issue 1 year ago • 1 comments

I would like to be able to ask pytest-redis to setup a redis instance once per session so I can easily distribute it why pytest-xdist.

Why ? Well it works perfectly right now, but it's hella slow

@pytest.fixture(scope="function")
def app(redisdb):
    application = create_app(redis_instance=redisdb)
    application.testing = True
    return application


@pytest.fixture(scope="function")
def redis_client(app) -> StrictRedis:
    return app.redis


@pytest.fixture(scope="function")
def client(app):
    with app.test_client() as testing_client:
        with app.app_context():
            yield testing_client

Since redisdb is a function-scoped fixture, I have to scope all my other fixtures using app or client as function which really slows down my tests.

I don't want my xdist workers to share anything, on the contrary. I just want the same redis instance for the whole session, for the sake of efficiency and speed (takes about 8 minutes to run 900 tests on github actions with 2 workers, and 2 minutes on 12 workers on my laptop)

Seluj78 avatar Jan 05 '24 15:01 Seluj78

+1. If there are any good workarounds to get "module" or "session" scopes, please let us know

shaeselix avatar Jan 24 '24 01:01 shaeselix