问题描述
我正在尝试读取来自AWS secretmanager.get_secret_value
的模拟响应。
import boto3
def get_secret()
session = boto3.Session(
{aws credentials}
)
client = session.client(
service_name='secretmsmanager'
)
try:
get_secret_value_response = client.get_secret_value(
SecretId={id}
)
except Exception as e:
do something
else:
if 'SecretString' in get_secret_value_response:
do something
else:
do something
我的测试看起来像这样
import boto3
from unittest.mock import patch,Magicmock
from function_code_module import function_code
@patch('function_code_module.fucntion_code.boto3')
def test_secretsmanager(mock_boto):
get_Secret_Response = {
'ARN': 'string','Name': 'string','VersionId': 'string','SecretBinary': b'bytes','SecretString': 'string','VersionStages': [
'string',],'CreatedDate': datetime(2020,1,1)
}
client_mock = Magicmock()
client_mock.get_secret_value = Magicmock(return_value=get_Secret_Response)
mock_boto.client = Magicmock(return_value=client_mock)
response = function.get_secret()
assert response is not None
尽管模拟响应具有'SecretString'
,但我所面临的问题仍然存在于函数中if语句的其他部分。因为它不是读为dict
,而是在那个地方是Magicmock
。
我收到的错误是:
TypeError:参数应为类似字节的对象或ASCII字符串,而不是 'Magicmock'
我尝试了return_value的许多组合,在以下三个语句中执行,到目前为止没有运气
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)