Итак, у меня есть класс S3 в файле / s3.py со следующим init:
class S3:
def __init__(self):
self.s3_client = boto3.client("s3")
def get_object(self):
s3_object = self.s3_client.get_object()
return s3_object
Как видите, класс boto3.client также имеет метод с именем get_object()
. Я тестирую свой пользовательский метод get_object()
из другого файла, но не хочу на самом деле совершать вызов boto3.client сервисам AWS.
test.py
class TestS3Class(unittest.TestCase):
"""TestCase for file/s3.py"""
def setUp(self):
"""Creates an instance of the live S3 class for testing"""
self.s3_test_client = S3()
@patch('boto3.client')
def test_get_object(self, mock_client):
""""""
mock_client.get_object.return_value = {'key': 'value'}
self.assertIsInstance(self.s3_test_client.get_object(), dict)
НаВ тот момент, когда я получаю AssertionError: None is not an instance of <class 'dict'>
в качестве ответа, я не уверен, что я что-то исправляю или нет, но он определенно не устанавливает возвращаемое значение boto3.client.get_object () в объект словаря.
Любые советы о том, как издеваться над этим self.s3_client = boto3.client ()?