ложные вызовы клиента boto3 - PullRequest
0 голосов
/ 08 июня 2019

У меня проблемы с тестированием следующего кода.Если я удаляю client_mock, тест успешно запускается, показывая, что был вызван boto3.client ().Но я не могу проверить ни один из звонков, которые делает возвращенный клиент.Я получаю AssertionError: Ожидается, что 'get_paginator' был вызван.

Я знаю о мото и плацебо, но для целей этого упражнения я пытаюсь научиться делать это с помощью unittest.mock.

accounts.py

import boto3 

def get_accounts():
    '''
    Return a list of account information from the organization.
    '''
    client = boto3.client('organizations')
    paginator = client.get_paginator('list_accounts')
    response_iterator = paginator.paginate()    

    accounts = []
    for page in response_iterator:
        for account in page['Accounts']:
            accounts.append(account)

    return accounts

tests.py

import unittest
from accounts import get_accounts, get_session
from unittest.mock import patch    

class TestAccounts(unittest.TestCase):
    @patch('accounts.boto3')
    @patch('accounts.boto3.client')
    def test_get_accounts(self, client_mock, boto3_mock):
        get_accounts()
        boto3_mock.client.assert_called()
        client_mock.get_paginator.assert_called()    


if __name__ == '__main__':
    unittest.main()
...