问题标签 [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 投票
2 回答
517 浏览

python - 在全局 boto 资源上使用 moto

我有这样的 my_module :

我正在尝试使用 moto 测试此方法,如下所示:

我正在尝试在全局 s3 boto 资源上使用 moto,但是在运行测试时,看起来 mock_s3 要么未设置,要么正在运行的测试无法屏蔽全局 s3 资源。我收到以下错误

但是,如果我在 some_func() 本地初始化 S3_RESOURCE ,它工作正常。我知道为了使用 moto,我们必须确保在声明实际的 bot3 资源之前初始化 moto 模拟。我们如何确保全局资源被 moto 模拟?

0 投票
1 回答
140 浏览

python - 在类方法上应用 moto 失败

将 moto mock 应用到整个测试类不会对类方法(如 python unittestssetupClass方法)产生影响。

将导致

0 投票
1 回答
109 浏览

python - 强制处理异常

我想抛出一个异常,这样我就可以完成几行的覆盖。

此代码有效并且不会引发错误,因为我有其他代码可以设置表格和种子数据。这是我试图让错误抛出的内容:

有任何想法吗?

0 投票
2 回答
1089 浏览

python - Pytest with Moto,使用后端更改 athena 查询的状态

我正在使用 moto 在我的代码库中测试 aws 功能。我遇到的问题之一是在测试 athena 时,查询状态无限期地停留在“QUEUED”,导致测试失败或超时。

下面是要测试的方法:

这是通过测试的夹具

这是测试(请记住,您需要from x使用上述方法更改为模块)

此测试失败,因为moto不会更改过去查询的状态,"QUEUED"并且测试期望更改状态,否则会触发异常。

我希望能够做类似的事情:

正如本期所建议的那样:https ://github.com/spulec/moto/issues/380

但是,boto3 mapreduce 后端似乎不再存在“工作流”属性,我找不到显式更改它的方法。理想情况下,这将能够在测试中的某个地方发生,以手动更改查询的状态以模拟实际资源的情况。

0 投票
1 回答
686 浏览

amazon-s3 - 模拟后未找到 Boto3 Moto 存储桶

我正在尝试使用 Boto3 moto 的 mocks3 实用程序来测试我连接到 s3 的代码,该函数基本上列出了所有具有分区日期的文件夹并返回最新的文件夹。我在模拟 s3 存储桶时没有发现异常,但是测试代码似乎没有找到那个存储桶

我的测试规范

测试功能

输出

0 投票
2 回答
346 浏览

python - 升级到最新的 moto 版本(1.3.15 和 1.3.16)后测试中断

将 moto 从版本 1.3.14 更新到 1.3.15/1.3.16 会中断测试并引发异常。

即使单独使用注释也会引发错误。

我使用这个requiriments.txt文件:

此测试示例适用于 moto 1.3.14,但不适用于较新版本:

这是执行时的错误python3 -m unittest mytest.py

版本:

  • 蟒蛇 3.8.5
  • 点 20.0.2

有什么建议吗?

注意 1:为了测试,我使用的是一个干净的新venv环境,安装的唯一库是moto.

注意 2:使用 1.3.14 可以正常工作,但在安装依赖项时会出现警告:

0 投票
1 回答
3784 浏览

python - 用 moto 模拟 lambda 响应

在我的代码中的某处,调用 lambda 以返回真/假响应。我试图在我的单元测试中模拟这个 lambda,但没有成功。

这是我的代码:

在内部,is_update_allowed调用 lambda,这是我想要模拟的。

我尝试在测试上方添加以下代码:

然后将我的测试更新为:

但我收到以下错误,这让我认为它实际上是在尝试与 AWS 对话

0 投票
0 回答
1467 浏览

python - Moto secretsmanager mock 一次不能模拟多个秘密对象

我有一个要测试的方法,它在多个秘密对象上调用 get_secret:

我收到一个错误:botocore.errorfactory.ResourceNotFoundException: An error occurred (ResourceNotFoundException) when calling the GetSecretValue operation: Secrets Manager can't find the specified secret

我是否错误地使用了moto?如何创建我的函数可以访问的两个秘密?

编辑

看起来这个问题应该已经解决了。我似乎仍然有这个问题:https ://github.com/spulec/moto/issues/1893

0 投票
1 回答
487 浏览

python - 在 Python 3.8 中使用 Moto DynamoDB 和 unittest 的拆解问题

我正在尝试使用motounittest基于muhannad0 博客中的此示例运行一些单元测试。

下面是我的代码(缩小了表创建,因为它不是那么重要)。

当我运行它时,我最终在 Python 3.8 的mock.py文件中遇到了一个错误。

感谢我的穴居人调试,我可以说这个错误发生在Teardown complete消息之后,这表明这是在测试成功执行之后发生的,并且仅在我的拆卸块完成后才会发生。

我非常喜欢 muhannad0 的这个例子,因为它使用了类装饰器,让我们可以轻松地在其中模拟 dynamodb,因此希望我们可以保留它。

如果您需要更多信息,请告诉我,您应该能够通过将代码复制并粘贴到您首选的 IDE 并点击 go 来自己运行它。

0 投票
0 回答
660 浏览

python - 'TypeError:在尝试模拟异常时不允许捕获不从 BaseException 继承的类'

我正在尝试测试与 Amazon Forecast 服务交互的代码块,它看起来与https://github.com/aws-samples/amazon-forecast-samples/blob/master/ml_ops/中提供的示例非常相似可视化博客/lambdas/createdataset/dataset.py

更具体地说,我正在尝试测试我是否正确处理了异常。假设“预测”是 Amazon Forecast boto3 客户端,代码结构如下:

我有一个看起来像这样的测试用例:

这会产生“TypeError:不允许捕获不从 BaseException 继承的类”,这让我感到困惑,因为 moto.forecast.exceptions.ResourceNotFoundException 继承了 moto 类“AWSError”,而后者又继承了“Exception”。

如果我无法将 side_effect 设置为异常,我对如何在不实际与预测服务交互的情况下测试代码的“例外”块感到相当茫然。任何想法将不胜感激!