首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Moto不嘲笑DynamoDB

Moto不嘲笑DynamoDB
EN

Stack Overflow用户
提问于 2020-06-06 13:54:32
回答 2查看 3.8K关注 0票数 1

我试图为一个与DynamoDB通信的Lambda函数编写单元测试。我正在使用moto,但它并不是在嘲弄任何东西。每当我在boto3中调用什么东西时,它就会使用我的AWS配置文件与实际的API进行通信,而不是模拟的。为什么会发生这种情况?

下面是代码:

代码语言:javascript
复制
### Unit test for the visitorCounterLambda function

from visitorCounterLambda import handler
import boto3
from moto import mock_dynamodb2


def setUp(self):
  #pass
  self.region = 'us-east-2'

@mock_dynamodb2
def test_handler():
  dynamodb = boto3.client('dynamodb')
  ddbTableName = "myDDBtable"

  # table = dynamodb.create_table(
  #   TableName = ddbTableName,
  #   BillingMode='PAY_PER_REQUEST',
  #   AttributeDefinitions=[
  #       {
  #           'AttributeName': 'id',
  #           'AttributeType': 'S'
  #       },
  #   ],
  #   KeySchema=[
  #       {
  #           'AttributeName': 'id',
  #           'KeyType': 'HASH'
  #       },
  #   ]
  # )
  tablesListed = dynamodb.list_tables()
  print(tablesListed)



if __name__ == '__main__':
    test_handler()

print(tablesListed)从我的实际帐户返回我的实际表。如果取消对create_table命令的注释,它也会在我的AWS帐户中创建表。

我在这里错过了什么?谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-06-07 02:04:02

我发现问题出在from visitorCounterLambda import handler部件上,因为该脚本在导入时已经建立了一个boto3客户机,因此mock无法破坏它。Moto文件在“非常重要--推荐的用法”下面列出了正确的方法。首先应该建立@mock_dynamodb2,然后再将外部资源放到函数中。

示例:

代码语言:javascript
复制
import boto3
from moto import mock_dynamodb2

@mock_dynamodb2
def test_handler():
  from visitorCounterLambda import handler
  dynamodb = boto3.client('dynamodb')

  ## do your magic here

  tablesListed = dynamodb.list_tables()
  print(tablesListed)
票数 1
EN

Stack Overflow用户

发布于 2022-11-16 17:05:35

依我看,离摩托远点。每一个版本都伴随着其他问题。

  • 我们已经使用它多年了,必须解决boto3每次更新中的棘手错误,有时整个测试套件会中断数周。不可能生活在对升级的恐惧中。
  • 当使用一些更高级的特性时,您通常会得到一条易碎的错误消息,这最终导致您得出不支持所讨论的特性的结论。

重写整个测试套件以摆脱这种依赖是一种痛苦,当然总是在错误的时间到来,墨菲定律。

模拟AWS依赖项以进行单元测试,并依靠集成测试来确认整个thinkg是否正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62232709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档