diff --git a/tests/conftest.py b/tests/conftest.py index c68768c..bd530bb 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -37,11 +37,17 @@ def key_prefix(request, redis): @pytest.fixture(scope="session", autouse=True) def cleanup_keys(request): - def cleanup_keys(): - # Always use the sync Redis connection with finalizer. Setting up an - # async finalizer should work, but I'm not suer how yet! - from redis_om.connections import get_redis_connection as get_sync_redis + # Always use the sync Redis connection with finalizer. Setting up an + # async finalizer should work, but I'm not suer how yet! + from redis_om.connections import get_redis_connection as get_sync_redis - _delete_test_keys(TEST_PREFIX, get_sync_redis()) + # Increment for every pytest-xdist worker + conn = get_sync_redis() + once_key = f"{TEST_PREFIX}:cleanup_keys" + conn.incr(once_key) - request.addfinalizer(cleanup_keys) + yield + + # Delete keys only once + if conn.decr(once_key) == 0: + _delete_test_keys(TEST_PREFIX, conn) diff --git a/tests/test_hash_model.py b/tests/test_hash_model.py index a35409d..b7c9b3f 100644 --- a/tests/test_hash_model.py +++ b/tests/test_hash_model.py @@ -137,7 +137,7 @@ async def test_full_text_search_queries(members, m): assert actual == [member1] - actual = await (m.Member.find(~(m.Member.bio % "anxious")).all()) + actual = await (m.Member.find(~(m.Member.bio % "anxious")).sort_by("age").all()) assert actual == [member1, member3] @@ -433,7 +433,7 @@ async def test_all_pks(m): bio="This is a test user to be deleted.", ) - await member1.save() + await member1.save() pk_list = [] async for pk in await m.Member.all_pks():