问题标签 [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.
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
,但似乎无法弄清楚如何在这里应用它。
python - 在测试期间模拟环境变量
我有一个非常简单的 fastapi 应用程序,我想测试它,代码dummy_api.py
如下:
当我想对此进行测试时,我正在使用以下文件:
但是,我无法模拟环境变量部分,因为其中一个测试以404
.
谁能指出我哪里出错了!!
python-3.x - 如何在 pytest 中模拟 subprocess.run?
我定义了这个类:
我想对 get_data() 进行单元测试,我应该如何模拟 subprocess.run?我还想断言异常是否被引发?
python - 如何使用 pytest-mock 有条件地模拟函数
我有一门课foo.py
,我想测试:
我想替换requests
调用来模拟响应。
这是我的测试文件test_foo.py
:
我想检查该mocked_requests_get
函数是否只被调用一次。
解释器在该行给出错误spy = mocker.spy ...
:
这是可以理解的 - 但我无法找到一种方法来获取引用该函数的对象实例。有人可以帮忙吗?
python - 带有 pytest-mock 的会话范围
我正在寻找有关如何使用 pytest-mock 插件的会话范围内的“会话模拟器”固定装置的示例。
如何修改文档提供的示例以在特定测试中使用它是相当清楚的:
但是我对这个全局固定装置应该在哪里以及如何初始化感到困惑。例如,假设我想为我的所有测试模拟“os.remove”。我是否在 confftest.py 中进行了设置,如果是,我该怎么做?
python - 在 python unittest 中模拟数据库
我试图通过模拟 sql 连接来模拟 unittest 模拟中 get_count 函数返回的值。但我得到了这个错误。
AssertionError: 12939 != <MagicMock name='mock.cursor().fetchone()。getitem ()' id='1053090478792'
应用程序.py
test_count.py
这是我的代码任何人都可以帮助我
visual-studio-code - pytest 无法加载 pytest-mock | VSCode pytest GUI 与 pytest-mock 配合得很好
我尝试在 python 中使用pytest
. 我有模块pytest
,pytest-mock
并pytest-cov
安装并使用 VSCode 作为编辑器(我conftest.py
在项目根目录中有文件)。
当我通过 VSCode 内置功能执行测试用例时,所有测试用例都成功运行。
但是,如果我使用内置终端 usingpytest
命令执行测试用例,则带有模拟对象的单元测试将失败。
VSCode 用来执行单元测试的命令是什么?有没有其他人遇到过这些问题?
如果您需要有关设置/设置的更多信息,请告诉我。
非常感谢任何帮助!
python - 使用 PyTest 测试被修饰的异常处理程序被调用
我使用装饰器来处理 Python 中的异常。这是装饰器功能:
现在我想在调用 SubProcessException 引发此函数时使用 Pytest。就像是:
但是模拟没有接到电话,失败的消息
AssertionError: Expected 'docker_exception_handler' to have been called once. Called 0 times
我不知道为什么。
python - Pytest-mock - 尝试模拟整个类时未使用 new_callable 类
在我正在测试的类中,我想模拟用作成员变量的整个 DataAccess 类。DataAccess 类只是抽象 SQLite 数据库连接。
我创建了一个连接到测试数据库的替换 MockDataAccess 类,但似乎仍然调用了主数据库 - 我做错了什么?
编辑:已按照建议和最初的方式更新了我正在修补的位置,但仍然无法正常工作?
测试类:
我的测试课:
python-3.x - 如何在 Python 中模拟类实例(不是类函数)
我很难模拟一个对象的实例。
我想编写一个单元测试来测试使用类实例的“my_func”函数。我知道如何模拟类函数,但是,我不知道如何模拟类(对象)本身的实例(不是函数)。
在我的模块文件中:
在我的测试文件中:
因为我不知道如何模拟一个类的实例,但我知道如何模拟一个类方法,所以我认为对于类的实例,使用构造函数可能会起作用 - 所以我使用了init,但是不幸的是,这对我不起作用,我收到一个错误:
E TypeError: __init__() should return None, not 'MagicMock'
在上面没有工作后,我尝试通过一个定制的夹具:
不幸的是,这也不起作用。我得到的错误:
它告诉我类 Client 有两个不同的对象,这就是错误。
我在这里不知所措,如何确保正确模拟我的客户?很感谢任何形式的帮助。