问题标签 [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.
python - 根据输入模拟函数内的 API 调用
假设有一个功能,除其他任务外,它会进行一些 api 调用。有没有办法在测试此函数时模拟所有 api 调用并根据输入指定调用的返回值。例如,假设您要测试的功能是这样的:
我想测试 someFunction 并指定,每次调用 someApiCall 时,不要执行该函数,只需根据该函数的输入返回一个值。例如,如果我正在处理时间,我希望 api 调用根据特定时间返回特定值,否则返回 noop 值。怎么能做到这一点?
pytest - 如何模拟 sqlalchemy.engine.cursor.LegacyCursorResult?
我有以下类连接到我的项目中的 MSSQL Server 实例,
我想模拟该方法
get_result_tuple
返回“transaction_id”和 sqlalchemy.engine.cursor.LegacyCursorResult 的实例。
如何模拟 sqlalchemy.engine.cursor.LegacyCursorResult 并在 ResultProxy 对象上返回一些虚拟数据?
调用者有以下代码,
请指教。
python - 如何模拟对 secretsmanager 的 boto3 客户端会话请求以返回特定响应或引发异常
给定如下代码:
我如何模拟
client.get_secret_value("some-value")
返回一些值
以及如何模拟它以引发异常
python - 模拟嵌入在某些对象中的 API 调用并根据对象内的输入改变行为
这是此处提出的 SO 问题的延续,但模式比最初要求的更复杂。我的主要目的是尝试根据传递给调用者的值来模拟 API 调用。API 调用不知道传递给其调用者的值,但需要提供正确的行为,以便可以对调用者进行全面测试。我正在使用时间来确定我想要的行为。
给定一个对象:
由另一个具有入口点代码的对象创建:
我怎样才能让 someApiCall 根据time
参数进行更改?
这是一个示例测试用例
测试用例没有得到我想要的结果(它返回一个函数指针)。
python - Python unittest:模拟从类对象调用的外部库函数
您好,我有以下代码;
我正在尝试测试 file_a 中的加载函数;下载是我导入的外部模块中的功能
file_a.py
我写了这样的测试
test.py
但似乎 bar 对象没有调用模拟下载,而是调用了导入的下载。我怎样才能解决这个问题并使我的测试通过?
python - Using pytest-mock to mock objects and object methods
I'm trying to use pytest-mock
for mocking. This library is essentially a plugin/wrapper for mock
and patch
.
My problem is defined as:
I have an application (mymodule.py
) that uses SQL Alchemy. Basically, there's a function that defines some objects from SQL Alchemy and returns a dictionary with those objects.
Then, a second function takes that output dictionary as input and uses them:
So now I'm writing unit tests, and I don't want to actually communicate with the real database. So I just need to mock everything sqlalchemy
related. So far, I've managed to mock create_engine
, MetaData
and Table
by doing:
That allows me to test some_function1
. But now I need to test some_function2
, which uses the methods or attributes .insert()
, .values
and .execute()
. How can I patch that?
django-rest-framework - 如何测试函数是否被端点调用
我正在尝试使用 pytest、mock 和 drf 测试我的函数是否被端点调用。
我在以下视图中覆盖了 create 方法:
我的功能:
我的测试:
但我得到这个错误:
使用调试,在同一个测试中,我知道该函数是由端点调用的。
python - Python mock - 修改类属性的模拟类方法
我目前有以下要测试的基本 Python 类:
正如你所看到的, step() 方法包含一个昂贵的 API 调用,所以我想用另一个函数来模拟它,避免昂贵的 API 调用但仍然增加self.steps
。我发现这样做是可能的(从这里可以看出):
我只是创建了一个mock_step(self)
避免 API 调用的函数,并step()
用新mock_step(self)
函数修补了原来的慢速方法。
然而,这导致了一个新的问题。由于该mock_step(self)
函数不是 Mock 对象,因此我无法在其上调用任何 Mock 方法(例如 assert_call() 和 call_count()):
为了解决这个问题,我尝试mock_step
使用参数包装一个 Mock 对象wraps
:
但后来我得到一个不同的错误说mock_step() missing 1 required positional argument: 'self'
。
因此,从这个阶段开始,我不确定如何断言step()
在run_steps()
.
python - TypeError:super() 参数 1 必须是类型,而不是 MagicMock - azure-devops python 包
我正在使用 azure-devOps python 模块来访问 azure API 以检索一些信息。我已经使用下面的代码来设置建立连接所需的身份验证。
在编写单元测试用例时,我无法模拟 Connection 类,因为它需要 BasicAuthentication 类型的对象。下面是我的单元测试用例:
我收到以下错误:
TypeError: super() 参数 1 必须是类型,而不是 MagicMock
是否有不同的方法来模拟此类或绕过对 API 的身份验证的方法。
python - 用 pytest-mock 模拟 sqlalchemy.order_by 不会覆盖调用
我的任务是向应用程序添加单元测试,我发现自己需要帮助来设置数据库查询的模拟。
我们有一个模型:
还有一个类 PBCategory 有一堆方法,但我们从第一个开始
在我的conftest中,我有以下固定装置:
这是我们尝试运行的第一个测试:
问题是,无论我如何格式化调用签名(return_value.order_by、return_value.order_by.return_value.all 等),我都会收到以下错误:
我看过这个问题,但它并没有让我走得太远...... 如何在 Flask-SqlAlchemy 中模拟 <ModelClass>.query.filter_by()
任何帮助将不胜感激。