无法使用moto测试第三方库以在本地环境中进行lambda测试

时间:2019-01-04 12:33:13

标签: unit-testing aws-lambda atlassian-localstack moto

我正在尝试在本地测试aws lambda函数,并成功地使用moto库模拟了dynamo DB之类的aws资源,但是在引入一个组件(即,调用第三方库的请求时,由于连接被拒绝,我得到了错误)。

requests.exceptions.ConnectionError: Connection refused: GET https://www.google.com/

主要是因为moto库为reponse.py类,即httpPretty库。

我们还可以使用其他替代方法来解决这些问题,或者在本地使用aws资源以及调用第三方库来测试lambda函数。

我的lambda函数来源:

  import boto3
  import requests    
  def lambda_handler(event,context):
        client=boto3.client('dynamodb')
        response = client.put_item(TableName='divyanayan_test',
                                  Item={'id': {'S': 'hello1'}})
        r = requests.get('https://www.google.com/')
        print(r)

也尝试使用localstack库并将映像部署到docker,但是它提供的URL无法连接到端点URL:“ http://localhost:4569/”。

参考:https://github.com/localstack/localstack

1 个答案:

答案 0 :(得分:0)

我发现的moto库第三方库的解决方案是模拟第三方响应以及预期响应,因此确实出现了任何连接被拒绝的错误。

对于用于本地lambda测试的localstack库,这是我的错误,因为我必须使用docker machine ip而不是localhost,然后该URL才可以访问。

如有任何疑问,请让我知道。