RedisContainer 在测试期间一直等待 [Python Testcontainers]

问题描述 投票:0回答:1

我想使用

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容器的代码,但找不到任何方法来解决它。任何建议或意见都会对解决这个问题很有帮助。

python unit-testing testing redis testcontainers
1个回答
0
投票

您可以导入 os 模块并将 TC_HOST 更改为使用 redis 容器的文件顶部的 localhost。

import os

os.environ['TC_HOST'] = 'localhost'
© www.soinside.com 2019 - 2024. All rights reserved.