在类方法上应用 moto 失败
Applying moto on a classmethod fails
将 moto 模拟应用于整个测试 class 对 class 方法没有影响,例如 python 单元测试 setupClass
方法。
@mock_ssm
class SomeClassTest(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
boto3.client("ssm").put_parameter(Name="some-name",
Value="some-value")
将导致
botocore.exceptions.NoCredentialsError: Unable to locate credentials
将 moto 实例应用于整个 class(包括 classmethod
)的一种方法是显式实例化和终止 moto 服务
class SomeClassTest(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.mock_ssm = mock_ssm()
cls.mock_ssm.start()
boto3.client("ssm").put_parameter(Name="some-name",
Value="some-value")
def tearDownClass(cls) -> None:
cls.mock_ssm.stop()
将 moto 模拟应用于整个测试 class 对 class 方法没有影响,例如 python 单元测试 setupClass
方法。
@mock_ssm
class SomeClassTest(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
boto3.client("ssm").put_parameter(Name="some-name",
Value="some-value")
将导致
botocore.exceptions.NoCredentialsError: Unable to locate credentials
将 moto 实例应用于整个 class(包括 classmethod
)的一种方法是显式实例化和终止 moto 服务
class SomeClassTest(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.mock_ssm = mock_ssm()
cls.mock_ssm.start()
boto3.client("ssm").put_parameter(Name="some-name",
Value="some-value")
def tearDownClass(cls) -> None:
cls.mock_ssm.stop()