我有一个约1000个测试的测试套件。以前,我们使用的mock_s3装饰器只能使用,因为我们的“集成测试”只是从其他服务导入模块并模拟了它们的功能。这始终是不可取的,但是直到最近才成为修复的重点。
我试图在独立服务器模式下使用moto,使用
在conftest.py中黑客启动服务def start_local_moto_server():
global moto_subprocess
moto_subprocess = subprocess.Popen(
['moto_server', 's3'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
bufsize=0, universal_newlines=True,
)
print 'Waiting for moto local service to start...'
while True:
moto_log = moto_subprocess.stderr.readline()
print moto_log
if 'Running' in moto_log:
break
boto3.resource(
's3', region_name='us-east-1', endpoint_url='http://127.0.0.1:5000'
).create_bucket(Bucket=TEST_S3_BUCKET_NAME)
随着测试的进行,对s3客户端的所有调用变得越来越慢,直到最后我得到
ReadTimeoutError: Read timeout on endpoint URL: "http://localbox:5000/my-bucket/my/key/file.tar"
单独运行这些测试会导致所有这些测试通过。
我真的不知道从哪里开始调试此问题或不了解问题,或者如何提供更多信息。有人可以帮忙找出问题所在吗?