How to mock a boto3 client object/call

后端 未结 2 920
后悔当初
后悔当初 2021-02-14 20:45

I\'m trying to mock one particular boto3 function. My module, Cleanup, imports boto3. Cleanup also has a class, \"cleaner\". During init, cleaner creates an ec2 client:

2条回答
  •  隐瞒了意图╮
    2021-02-14 21:26

    You should be mocking with respect to where you are testing. So, if you are testing your cleaner class (Which I suggest you use PEP8 standards here, and make it Cleaner), then you want to mock with respect to where you are testing. So, your patching should actually be something along the lines of:

    class SomeTest(Unittest.TestCase):
        @mock.patch('path.to.Cleaner.boto3.client', return_value=Mock())
        def setUp(self, boto_client_mock):
            self.cleaner_client = boto_client_mock.return_value
    
        def your_test(self):
            # call the method you are looking to test here
    
            # simple test to check that the method you are looking to mock was called
            self.cleaner_client.desribe_tags.assert_called_with()
    

    I suggest reading through the mocking documentation which has many examples to do what you are trying to do

提交回复
热议问题