【问题标题】:Not able to test third party libraries with moto for lambda testing in local environment无法使用 moto 测试第三方库以在本地环境中进行 lambda 测试
【发布时间】:2019-05-31 00:46:44
【问题描述】:

我正在尝试在本地测试 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 not 无法连接到端点 URL:“http://localhost:4569/”。

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

【问题讨论】:

    标签: unit-testing aws-lambda localstack moto


    【解决方案1】:

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

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

    如有任何疑问,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2020-09-04
      • 2017-05-23
      相关资源
      最近更新 更多