moto @mock_ec2 收到错误导入错误:无法导入名称"字典加载器"?



我有以下测试代码,

from unittest.mock import Mock, patch
import boto3
import boto3.resources
import boto3.resources.base
import boto3.session
import pytest
from moto import mock_ec2
@pytest.fixture(scope="function")
def aws_credentials():
"""Mocked AWS Credentials for moto."""
os.environ["AWS_ACCESS_KEY_ID"] = "testing"
os.environ["AWS_SECRET_ACCESS_KEY"] = "testing"
os.environ["AWS_SECURITY_TOKEN"] = "testing"
os.environ["AWS_SESSION_TOKEN"] = "testing"
os.environ["MOTO_ALLOW_NONEXISTENT_REGION"] = "True"
os.environ["AWS_DEFAULT_REGION"] = "testing"
@pytest.fixture
def get_session(aws_credentials):
"""boto3 Session"""
return boto3.session.Session()
# and other tests code

它运行良好。然而,在我添加以下test_method 后,它出现了以下错误

@mock_ec2
def test_get_instances(get_session):
"""Test ...."""

错误为:

ImportError while importing test module 'C:Users....test_n1.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
........anaconda3libimportlib__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
testsunit_teststest_node.py:85: in <module>
@mock_ec2
........anaconda3libsite-packagesmoto__init__.py:17: in f
module = importlib.import_module(module_name, "moto")
........anaconda3libimportlib__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
........anaconda3libsite-packagesmotoec2__init__.py:1: in <module>
from .models import ec2_backends
........anaconda3libsite-packagesmotoec2models.py:29: in <module>
from moto.core import BaseBackend
........anaconda3libsite-packagesmotocore__init__.py:4: in <module>
from .responses import ActionAuthenticatorMixin
........anaconda3libsite-packagesmotocoreresponses.py:11: in <module>
from moto.core.exceptions import DryRunClientError
........anaconda3libsite-packagesmotocoreexceptions.py:2: in <module>
from jinja2 import DictLoader, Environment
E   ImportError: cannot import name 'DictLoader'

听起来好像缺少了一些依赖项。确保在安装moto:时指定了您正在使用的服务

pip install moto[ec2]

当自行安装moto(pip install moto(时,它将只安装基本服务——指定将使用哪些服务来确保它安装所需的依赖项。

请参阅文档:http://docs.getmoto.org/en/latest/docs/getting_started.html#installing-moto

相关内容

最新更新