【发布时间】:2022-10-06 16:25:01
【问题描述】:
任何人都有关于如何在单独的方法中模拟 boto3 机密管理器客户端的 get_secret_value 方法而不将客户端传递给该方法的想法?坚持了几天,现在。任何想法,github上可能的工作代码的链接将不胜感激。
-
你能分享你拥有的任何基线代码吗?
标签: amazon-web-services unit-testing boto3 aws-cdk aws-secrets-manager
任何人都有关于如何在单独的方法中模拟 boto3 机密管理器客户端的 get_secret_value 方法而不将客户端传递给该方法的想法?坚持了几天,现在。任何想法,github上可能的工作代码的链接将不胜感激。
标签: amazon-web-services unit-testing boto3 aws-cdk aws-secrets-manager
Boto3 有自己的存根,但我更喜欢使用 python unittest.mock,如下所示:
您在 my_app 中的代码
import boto3
def call_under_test():
sm = boto3.client('secretsmanager')
sm.get_secret_value(SecretId='my-secret')
您的测试可能如下所示:
from unittest.mock import Mock, patch
import my_app
@patch('my_app.boto3.client')
def test_get_secret(mock_client: Mock):
secret = {'SecretString': 'some-secret'}
mock_client.return_value.get_secret_value.return_value = secret
my_app.call_under_test() # here is you unit to test
mock_client.assert_called_with('secretsmanager')
mock_client().get_secret_value.assert_called_with(SecretId='my-secret')
【讨论】: