Redis fixtures and fixture factories for Pytest.This is a pytest plugin, that enables you to test your code that relies on a running Redis database. It allows you to specify additional fixtures for Redis process and client.
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)
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
Since
redisdb
is a function-scoped fixture, I have to scope all my other fixtures usingapp
orclient
asfunction
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)