ImportError:无法从“moto”导入名称“mock_s3”

Sup*_*tch 6 python moto

import pytest
from moto import mock_s3


@pytest.fixture(scope='module')
def s3():
    with mock_s3():
        os.environ['AWS_ACCESS_KEY_ID'] = 'test'
        os.environ['AWS_SECRET_ACCESS_KEY'] = 'test'
        os.environ['AWS_DEFAULT_REGION'] = 'us-east-1'
        s3 = boto3.resource('s3')
        s3.create_bucket(Bucket='test_bucket')
        yield s3
Run Code Online (Sandbox Code Playgroud)

这段代码本来可以工作,但现在抛出异常Cannot import name mock_s3 from moto。我究竟做错了什么?

Sup*_*tch 10

只需将您的导入替换为from moto import mock_aws并使用with mock_aws():即可。

Moto 最近升级到了 5.0 版本,而您之前可能运行的是 4.x。

https://github.com/getmoto/moto/blob/master/CHANGELOG.md

如果您检查更改日志,您将看到进行了一项重要的重大更改:

所有装饰器都已替换为单个装饰器:mock_aws