pytest-redis
pytest-redis copied to clipboard
Session-scoped redisdb
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)
+1. If there are any good workarounds to get "module" or "session" scopes, please let us know