1
1
import time
2
2
3
- from testcontainers .redis import RedisContainer
3
+ from testcontainers .redis import RedisContainer , AsyncRedisContainer
4
+ import pytest
4
5
5
6
6
7
def test_docker_run_redis ():
@@ -23,6 +24,49 @@ def test_docker_run_redis_with_password():
23
24
assert client .get ("hello" ) == "world"
24
25
25
26
27
+ pytest .mark .usefixtures ("anyio_backend" )
28
+
29
+
30
+ @pytest .mark .parametrize ("anyio_backend" , ["asyncio" ])
31
+ async def test_key_set_in_async_redis (anyio_backend ):
32
+ with AsyncRedisContainer () as container :
33
+ async_redis_client : redis .Redis = await container .get_async_client (decode_responses = True )
34
+ key = "key"
35
+ expected_value = 1
36
+ await async_redis_client .set (key , expected_value )
37
+ actual_value = await async_redis_client .get (key )
38
+ assert int (actual_value ) == expected_value
39
+
40
+
41
+ pytest .mark .usefixtures ("anyio_backend" )
42
+
43
+
44
+ @pytest .mark .parametrize ("anyio_backend" , ["asyncio" ])
45
+ @pytest .mark .skip (reason = "Need to sort out async pub/sub" )
46
+ async def test_docker_run_async_redis (anyio_backend ):
47
+ config = AsyncRedisContainer ()
48
+ with config as container :
49
+ client : redis .Redis = await container .get_async_client (decode_responses = True )
50
+ p = await client .pubsub ()
51
+ await p .subscribe ("test" )
52
+ await client .publish ("test" , "new_msg" )
53
+ msg = wait_for_message (p )
54
+ assert "data" in msg
55
+ assert b"new_msg" , msg ["data" ]
56
+
57
+
58
+ pytest .mark .usefixtures ("anyio_backend" )
59
+
60
+
61
+ @pytest .mark .parametrize ("anyio_backend" , ["asyncio" ])
62
+ async def test_docker_run_async_redis_with_password (anyio_backend ):
63
+ config = AsyncRedisContainer (password = "mypass" )
64
+ with config as container :
65
+ client : redis .Redis = await container .get_async_client (decode_responses = True )
66
+ await client .set ("hello" , "world" )
67
+ assert await client .get ("hello" ) == "world"
68
+
69
+
26
70
def wait_for_message (pubsub , timeout = 1 , ignore_subscribe_messages = True ):
27
71
now = time .time ()
28
72
timeout = now + timeout
0 commit comments