0

我有一个大约 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"

单独运行这些测试会使它们全部通过。

我真的不知道从哪里开始调试或理解问题,或者如何提供更多信息。有人可以帮助确定问题吗?

4

1 回答 1

0

moto 开发人员在此处提供的慢速答案:https ://github.com/spulec/moto/issues/2288

于 2019-07-11T22:05:14.317 回答