我想使用
RedisContainer
中的 tescontainers
来测试我的端点,但我在测试过程中遇到了问题。由于它没有响应,我编写了一个简单的代码来查看它是否工作正常,但是当我启动 RedisContainer 时,它停留在等待阶段,这可能就是我在测试期间遇到问题的原因。
我的简单代码:
from testcontainers.redis import RedisContainer
with RedisContainer('redis:latest') as re:
re.start()
print("Hello")
re.stop()
输出:
Pulling image redis:latest Container started: 381b7daed7 Waiting to be ready...` testcontainers.core.exceptions.TimeoutException: Wait time exceeded 120 sec. Method _connect, args () , kwargs {}. Exception Error 11001 connecting to localnpipe:64913. getaddrinfo failed.
我之前遇到过与
PostgresContainer
相同的问题,并像本期一样解决了它:
https://github.com/testcontainers/testcontainers-python/issues/108#issuecomment-660371568
替换主机值可以防止容器卡住:
class PostgresContainerX(PostgresContainer):
def get_connection_url(self):
return super().get_connection_url().replace('localnpipe', 'localhost')
但是我不知道如何用RedisContainer解决这个问题。我查看了redis容器的代码,但找不到任何方法来解决它。任何建议或意见都会对解决这个问题很有帮助。
您可以导入 os 模块并将 TC_HOST 更改为使用 redis 容器的文件顶部的 localhost。
import os
os.environ['TC_HOST'] = 'localhost'