0

将 moto mock 应用到整个测试类不会对类方法(如 python unittestssetupClass方法)产生影响。

@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
4

1 回答 1

0

将 moto 实例应用到整个类(包括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()
于 2020-10-01T19:41:01.657 回答