问题标签 [pytest-mock]

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 投票
2 回答
1415 浏览

python - 在测试期间模拟环境变量

我有一个非常简单的 fastapi 应用程序,我想测试它,代码dummy_api.py如下:

当我想对此进行测试时,我正在使用以下文件:

但是,我无法模拟环境变量部分,因为其中一个测试以404.

谁能指出我哪里出错了!!

0 投票
2 回答
2515 浏览

python-3.x - 如何在 pytest 中模拟 subprocess.run?

我定义了这个类:

我想对 get_data() 进行单元测试,我应该如何模拟 subprocess.run?我还想断言异常是否被引发?

0 投票
1 回答
3312 浏览

python - 如何使用 pytest-mock 有条件地模拟函数

我有一门课foo.py,我想测试:

我想替换requests调用来模拟响应。

这是我的测试文件test_foo.py

我想检查该mocked_requests_get函数是否只被调用一次。

解释器在该行给出错误spy = mocker.spy ...

这是可以理解的 - 但我无法找到一种方法来获取引用该函数的对象实例。有人可以帮忙吗?

0 投票
1 回答
1382 浏览

python - 带有 pytest-mock 的会话范围

我正在寻找有关如何使用 pytest-mock 插件的会话范围内的“会话模拟器”固定装置的示例。

如何修改文档提供的示例以在特定测试中使用它是相当清楚的:

但是我对这个全局固定装置应该在哪里以及如何初始化感到困惑。例如,假设我想为我的所有测试模拟“os.remove”。我是否在 confftest.py 中进行了设置,如果是,我该怎么做?

0 投票
1 回答
265 浏览

python - 在 python unittest 中模拟数据库

我试图通过模拟 sql 连接来模拟 unittest 模拟中 get_count 函数返回的值。但我得到了这个错误。

AssertionError: 12939 != <MagicMock name='mock.cursor().fetchone()。getitem ()' id='1053090478792'

应用程序.py

test_count.py

这是我的代码任何人都可以帮助我

0 投票
0 回答
72 浏览

visual-studio-code - pytest 无法加载 pytest-mock | VSCode pytest GUI 与 pytest-mock 配合得很好

我尝试在 python 中使用pytest. 我有模块pytestpytest-mockpytest-cov安装并使用 VSCode 作为编辑器(我conftest.py在项目根目录中有文件)。

当我通过 VSCode 内置功能执行测试用例时,所有测试用例都成功运行。

但是,如果我使用内置终端 usingpytest命令执行测试用例,则带有模拟对象的单元测试将失败。

VSCode 用来执行单元测试的命令是什么?有没有其他人遇到过这些问题?

如果您需要有关设置/设置的更多信息,请告诉我。

非常感谢任何帮助!

0 投票
1 回答
105 浏览

python - 使用 PyTest 测试被修饰的异常处理程序被调用

我使用装饰器来处理 Python 中的异常。这是装饰器功能:

现在我想在调用 SubProcessException 引发此函数时使用 Pytest。就像是:

但是模拟没有接到电话,失败的消息 AssertionError: Expected 'docker_exception_handler' to have been called once. Called 0 times 我不知道为什么。

0 投票
2 回答
107 浏览

python - Pytest-mock - 尝试模拟整个类时未使用 new_callable 类

在我正在测试的类中,我想模拟用作成员变量的整个 DataAccess 类。DataAccess 类只是抽象 SQLite 数据库连接。

我创建了一个连接到测试数据库的替换 MockDataAccess 类,但似乎仍然调用了主数据库 - 我做错了什么?

编辑:已按照建议和最初的方式更新了我正在修补的位置,但仍然无法正常工作?

测试类:

我的测试课:

0 投票
1 回答
590 浏览

python-3.x - 如何在 Python 中模拟类实例(不是类函数)

我很难模拟一个对象的实例。

我想编写一个单元测试来测试使用类实例的“my_func”函数。我知道如何模拟类函数,但是,我不知道如何模拟类(对象)本身的实例(不是函数)。

在我的模块文件中:

在我的测试文件中:

  • 因为我不知道如何模拟一个类的实例,但我知道如何模拟一个类方法,所以我认为对于类的实例,使用构造函数可能会起作用 - 所以我使用了init,但是不幸的是,这对我不起作用,我收到一个错误: E TypeError: __init__() should return None, not 'MagicMock'

  • 在上面没有工作后,我尝试通过一个定制的夹具:

不幸的是,这也不起作用。我得到的错误:

它告诉我类 Client 有两个不同的对象,这就是错误。

我在这里不知所措,如何确保正确模拟我的客户?很感谢任何形式的帮助。