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

unit-testing - 测试在其主体中调用 boto3 的函数时如何模拟 boto3 调用

我正在尝试测试一个get_date_from_s3(bucket, table)使用 pytest 调用的函数。在这个函数中,有一个boto3.client("s3").list_objects_v2()我想在测试期间模拟的调用,但我似乎无法弄清楚它是如何工作的。

这是我的目录设置:

该代码continuous.py将在 AWS 粘合作业中执行,但我正在本地对其进行测试。

my_project/glue/continuous.py

my_project/tests/glue/test_continuous.py

这就是我想要的:我想通过模拟 s3_client.list_objects_v2() 并将响应值显式设置为来测试 get_date_from_s3() example_response。我尝试做类似下面的事情,但它不起作用:

笔记

我注意到许多模拟示例都具有作为类的一部分进行测试的功能。因为 Continuous.py 是一项粘合工作,所以我没有找到创建类的实用程序,我只有函数和调用它的 main(),这是一种不好的做法吗?函数之前的模拟装饰器似乎仅用于作为类的一部分的函数。我也读过关于moto,但似乎无法弄清楚如何在这里应用它。

0 投票
1 回答
125 浏览

python - S3 单元测试 boto 客户端

在为 S3 客户端编写单元测试时遇到问题,似乎测试正在尝试使用真正的 s3 客户端,而不是我为测试创建的客户端,这是我的示例

这会导致以下错误

botocore.exceptions.ClientError: An error occurred (ExpiredToken) when calling the PutObject operation: The provided token has expired.

我正在测试的代码看起来像这样

0 投票
1 回答
287 浏览

unit-testing - 如何验证使用 moto mock cognitoidp 生成的 JWT 令牌

我正在尝试在 python 应用程序中测试我的服务器端对 cognito JWT 令牌的处理。我正在使用 Moto 创建一个认知用户池,在池中创建一个用户,对用户进行身份验证,然后取回一个 JWT。一切正常,直到我想验证 JWT 以便它可以用于访问服务器上的某些内容。

验证 JWT 的正常过程的一部分是从 cognito 用户池下载公共 JWK 文件,并使用它来验证令牌的签名。似乎没有下载 JWK 文件的 Moto 实现,那么如何验证使用 Moto 生成的令牌?

0 投票
1 回答
144 浏览

docker - “本地” Step Functions 状态机在主机上调用 moto_server 时出现 404 错误

在“本地”模式下使用 AWS Step Functions 状态机 (SFSM),即在我的笔记本电脑上的 Docker 中运行

试图在我的笔记本电脑主机上运行指向模拟服务的任务

我可以在 Docker 上正确安装 SFSM,更新它,运行它

我可以curl http://host.docker.internal:5000从 docker 运行并连接到 moto_server

我在 SFSM 容器上安装了 aws cli,然后运行aws sns --endpoint http://host.docker.internal:5000 list-topics它显示了正确的主题

我在我的 docker env 文件中设置了 SNS_ENDPOINT url 以指向主机

但是如果运行 SFSM,我总是会收到 404 Not Found 错误:

my_sfn.json:

码头工人-env.txt:

知道如何解决吗?

0 投票
1 回答
666 浏览

python - 使用 unittests 和 moto 模拟 AWS

我习惯于pytest进行单元测试,而不使用类。今天我想尝试一下unittest,我想将我的测试封装在一个TestCase中。

然后考虑这个示例测试类:

为什么setUpClass从测试中看不到放置的参数?我可以想象,通过在@moto.mock_ssm那里使用装饰器,这一切都将在模拟的上下文中完成。

但是,我可以将参数放在其中test_something

然后它(显然)有效。为什么不使用我的第一种方法?我不想为每个依赖它的测试填充虚假的ssm参数。在这里最好的方法是什么?

我问这个的原因是因为我要测试的类在初始化时需要这个参数。

0 投票
1 回答
538 浏览

amazon-s3 - 使用 Moto 将 s3 存储桶模拟为 IAM 用户

模拟场景:

我正在尝试以附加了 s3 拒绝策略的 iam 用户身份访问 s3 存储桶。因此访问 s3 存储桶将通过 Access Denied 错误。但我可以看到桶的内容..

下面是我的代码:

回复

任何帮助表示赞赏。谢谢

0 投票
1 回答
216 浏览

docker - 如何将 docker 镜像推送到 moto 服务器中的 ecr repo

我正在使用命令运行 moto 服务器

我使用带有命令的 moto 服务器创建了一个 ECR 存储库,

现在任何人都可以帮助如何将 docker 映像推送到使用 moto 服务器创建的这个 ecr repo 中吗?

0 投票
0 回答
116 浏览

python-3.x - ecs的moto测试

我有一个 python 方法,它使用 boto3 get_paginator 根据一些标签和一些名称列出某些 ECS Fargate 服务。

现在我想用 moto 测试一下。因此,我创建conftest.py了我定义所有moto mock连接到服务的地方,比如ecs。此外,我创建了test_main.py如下所示的文件,其中创建了连接到 ECS Fargate 的虚拟服务。但是由于某种原因,如果我尝试在测试文件中断言 main 方法的结果,服务列表会返回empty. 而我希望看到test-service-for-successful结果。是否有我遗漏的东西或 moto 中仍然没有分页功能?

0 投票
1 回答
2051 浏览

django - 使用 moto 和 boto3 上传测试文件

我想对从 aws 导入的文件进行测试。我使用 moto 模拟 s3,以免弄乱实际数据。但是,现在 aws 似乎是空的,因此我决定在 mocked s3 上上传一些测试文件。我该怎么做?

这是我的设置,
Conftest.py:

测试文件:

但是,上传它会引发错误TypeError: expected string or bytes-like object,但我确信我使用了不正确的命令进行文件上传。有人可以帮忙吗?谢谢!

0 投票
0 回答
54 浏览

python - 使用装饰器模拟包装函数中的导入

我想编写一个装饰器,在应用时模拟模拟函数的导入,例如,我想要以下代码:

Wherecall_api包含在直接或间接导入从模块调用的类Api的模块api_library中。我希望实现看起来像这样,但它不起作用

我受到moto图书馆的启发,并希望完成与他们使用方便的装饰器所做的类似的事情,例如mock_s3