问题标签 [moto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
388 浏览

python - 我真的可以在模拟的 EMR 集群上运行 Spark 作业吗?

使用moto我能够模拟 EMR 集群:

添加的步骤似乎一直处于STARTING状态。是否可以将 Spark 作业实际提交到模拟集群并在那里运行?

我正在构建一个将作业提交到 EMR 集群的实用程序,并且我想对其进行测试。我想使用这个实用程序运行一个简单的 Spark 作业,这就是问题的来源。请注意,我对 Spark 集群或测试提交的 Spark 作业的正确性不感兴趣。实际上,我对测试将作业提交到EMR并检查结果的流程更感兴趣(理想情况下,应该将其保留在模拟的 S3 存储桶上)。

0 投票
1 回答
2133 浏览

serverless-framework - 使用单独的无服务器离线包或 AWS SAM Local 或 Moto 库在本地运行 lambda

我需要创建一个集成项目,它在执行时应该启动所有 aws mock 服务,例如S3、API 网关、SQS、Dynamo dbSSM。我们使用serverless.com 框架在内部使用上述 AWS 服务的 Node.js 中开发 lambda。此外,这些 lambda 使用 API Gateway 调用另一个 lambda,其中 X 调用类型是异步调用的事件。

关于我应该选择哪种方法在本地运行这些 lambda 的任何建议:

  1. 我应该创建一个无服务器项目,其中无服务器离线插件如
    • serverless- s3 -local
    • 无服务器-发电机-本地
    • 无服务器离线-ssm
    • 无服务器离线 - dynamodb

所以当这个项目被执行时,它将在本地机器的特定端口上运行这些服务。

  1. 使用SAM 本地

    • 为此,我需要编写一个 sam 模板,因为目前我使用的是 serverless.com 框架,其中有 serverless.yml 而不是 sam 模板。
    • 还有 serverless-sam 插件可以将 serverless.yml 导出到 sam 模板,但是,对于 serverless.yml 中的少数部分,它会引发错误,因为对于少数基础构建,我们使用 serverless.yml 中的 terraform 执行输出。
    • 此 terraform 不适用于本地。所以基本上我没有选择使用 serverless-sam 插件的导出功能。我需要创建一个单独的项目,该项目将具有包含所有相关 AWS 服务规范的 sam 模板。
  2. 使用 Python Moto 库:https ://github.com/spulec/moto#stand-alone-server-mode

提前致谢

0 投票
1 回答
181 浏览

amazon-web-services - MOTO后端服务如何创建bucket

任何人都可以指出我正确的方向吗?我正在尝试将 moto ( https://github.com/spulec/moto ) 作为后端服务运行,以便我可以测试我的应用程序。我能够按照建议(http://localhost:5000/moto-api/#)运行 moto 服务并加载 moto-api 的网页。

我有一个问题,我如何为这个后端服务设置我的所有测试桶和实例?

谢谢。

0 投票
2 回答
1402 浏览

python - 如何在 Python/Django 中使用 AWS SNS (boto3/moto) 测试 SMS?

我正在开发一个使用 AWS SNS 在某些端点发送 SMS 的 API。在涉及这些端点的测试中,使用了mock_sns装饰器。但是,没有就发送的 SMS 消息的数量或内容作出任何断言。我想这只是为了避免错误。然而,就我而言,我实际上需要检查是否发送了一条 SMS 消息并且它是否包含特定文本。我怎样才能做到这一点?我的测试应该是什么样子?

我知道如何使用普通的 Python 模拟来做到这一点,但由于该项目已经moto作为依赖项,我想我会试一试,但我很惊讶我找不到任何这样一个简单用例的例子。或者也许我误解了这个图书馆的目的?

0 投票
1 回答
2298 浏览

amazon-web-services - 调用 Lambda 函数的 aws boto3 unittest 函数

我有一个调用 AWS Lambda 函数的 python 函数。

如何为此功能创建单元测试?我一直在将 Moto 用于其他 AWS 服务,但无法使其适用于 Lambda。

我尝试使用moto:

这会出错:

0 投票
1 回答
798 浏览

python - Moto mock_s3 EndpointConnectionError,连接被拒绝

我正在尝试模拟我与 moto 的 S3 连接

但我收到以下错误:

0 投票
1 回答
81 浏览

regex - 涉及 grep 的相同 bash 脚本在一台机器上成功,但在另一台机器上失败

我有以下 shell 脚本:

shunit2我使用and为上述脚本编写了一些单元测试moto_server。这是测试脚本:

现在我在本地机器上运行代码,测试顺利通过。

然后我将它推送到 gitlab,测试脚本由 gitlab 运行器使用 python:3.8 图像执行。

运行器上的测试失败,并且模式匹配的断言似乎失败了。

我注意到 runner 使用 grep 版本 3.3-1,而我的本地机器上有 3.4 版本,但经过查看,并没有太大区别。

此外,我确实采用了跑步者产生的输出并在本地对其进行了测试,以尝试匹配相同的正则表达式,并且它确实匹配。

我不知道为什么会存在这种差异。

0 投票
2 回答
2909 浏览

python - 模拟多个 boto3 服务,其中一些没有 moto 实现

我正在尝试使用模拟对 AWS Lambda 函数中的逻辑进行单元测试。Lambda 通过 AWS Pinpoint 发送推送通知来完成它的执行。Lambda 还使用 AWS SSM 参数存储。我一直在使用 moto https://github.com/spulec/moto在其他 Lambdas 中模拟多个 boto3 对象,但目前在 moto 中没有 Pinpoint 实现。

我在https://stackoverflow.com/a/55527212/839338中找到了一个解决方案,我需要对其进行修改才能使其正常工作。它回答的问题不是关于我的确切情况,而是答案为我指明了一个解决方案。所以我在这里发帖记录我对我修改的解决方案的更改,并询问是否有更优雅的方式来做到这一点。我看过 botocore.stub.Stubber 但看不出更好的方法,但我愿意被证明是错误的。

到目前为止我的代码:

测试.py

我的模块.py

特别是我想知道如何更好、更优雅地实现 mock_boto3_client() 以更通用的方式处理。

0 投票
0 回答
688 浏览

python - Moto mock s3 似乎可以运行但找不到文件

我正在尝试用 模拟一个 s3 实例Moto,这似乎确实有效,但是由于某种原因,它似乎在真正的 s3 中搜索文件而不是模拟的 s3。
我的工作层次结构如下所示:

conftest我这样嘲笑s3:

test mock s3.py看起来像这样:

当我运行pytest tests/mock s3/test mock s3.py它似乎工作正常。但是,如果我在运行时pytest(例如pytest tests/mock s3)由于某种原因不直接调用文件,它似乎没有使用我的模拟 s3,files从 s3 取回真实文件。
模拟夹具仍然被应用(我知道,因为我添加了打印的打印件)但由于某种原因它无法在模拟中找到文件。

编辑——添加路径和文件到test_something

0 投票
0 回答
300 浏览

boto3 - 如何在 Boto3 中获取模拟事件

我有一个注册了 SNS 的 s3 存储桶。SNS 通知进入一个由我想测试的 lambda 监控的 SQS。

我在测试中使用 moto 来模拟我的 s3 调用。当我设置测试时,我将一个对象放入我的 S3 存储桶中。然后我还有一个我模拟的 json 文档,它反映了将生成并传递给我的 lambda(从 S3 接收事件)的事件。

我的问题是,与其手动模拟事件 json,我可以使用 moto/boto 来生成它吗?