J'essaie d'écrire des tests unitaires pour aws RDS. Actuellement, les appels start stop rds api n'ont pas encore été mis en œuvre en moto. J'ai essayé de me moquer de boto3 mais j'ai rencontré toutes sortes de problèmes bizarres. J'ai fait un peu de googling et trouvé http://botocore.readthedocs.io/en/latest/reference/stubber.htmlaws client boto3 Stubber aide stubbing tests unitaires
J'ai donc essayé d'implémenter l'exemple pour rds mais le code semble se comporter comme le client normal, même si je l'ai écrasé. Vous n'êtes pas sûr de ce qui se passe ou si je bosse correctement?
from LambdaRdsStartStop.lambda_function import lambda_handler
from LambdaRdsStartStop.lambda_function import AWS_REGION
def tests_turn_db_on_when_cw_event_matches_tag_value(self, mock_boto):
client = boto3.client('rds', AWS_REGION)
stubber = Stubber(client)
response = {u'DBInstances': [some copy pasted real data here], extra_info_about_call: extra_info}
stubber.add_response('describe_db_instances', response, {})
with stubber:
r = client.describe_db_instances()
lambda_handler({u'AutoStart': u'10:00:00+10:00/mon'}, 'context')
si les moqueries WORKS pour la première ligne dans la Mitrailleuse et la valeur de r est retourné comme mes données écrasa. Lorsque je tente et aller dans ma méthode de lambda_handler dans mon lambda_function.py et utilise encore le client bouchonné il se comporte comme un client unstubbed normal:
lambda_function.py
def lambda_handler(event, context):
rds_client = boto3.client('rds', region_name=AWS_REGION)
rds_instances = rds_client.describe_db_instances()
sortie d'erreur:
File "D:\dev\projects\virtual_envs\rds_sloth\lib\site-packages\botocore\auth.py", line 340, in add_auth
raise NoCredentialsError
NoCredentialsError: Unable to locate credentials
L'avantage du Stubber sur une maquette typique est qu'il se comporte presque exactement comme un client moins faire un requête http réelle. Vous devrez donc toujours configurer le client avec les informations d'identification et configurer la région, sinon il commettra une erreur. –
Bonjour Jordon, je pense que vous avez peut-être mal lu mon message. La simulation WORKS dans mon test jusqu'à ce que j'essaie d'initialiser le client dans un autre fichier -> lambda_function.py –
Vous ne semblez pas passer le client stubbed à votre gestionnaire lambda. –