问题标签 [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.
pytest - 已修补模块时正确修补 pytest 中的方法
我们有一个测试夹具,它可以修补两个类,如下所示。
LicenseContent 为许可内容的 api 调用提供服务并使用 UserLicense。
UserLicense 是第三方导入的许可证用户(使用加密)的类检查并服务于三个目的。
- 检查许可证验证的所有加密方法。
- 如果用户通过方法 isvalid() 拥有有效的许可证
- 通过方法 userrole() 设置用户的正确授权
通过修补 UserLicense 我可以测试 isvalid,但是当我尝试修补方法以获取用户角色时,它不会将方法的返回值设置为管理员并且测试失败。
修补方法的正确方法是什么?
python - 测试当前模块外的变量是否写入
我正在尝试为在专用 global_variables 模块中写入变量的函数编写一个 pytest 套件,但我不知道如何检查变量是否被写入那里。我已经尝试使用 pytest-mock 的 mocker.patch 来模拟变量,但 mocker 似乎只允许你从一个模拟变量中读取,而不是写入一个。
正在测试的代码:
我的单元测试:
我想添加某种监听器来查看是否正在写入 gv.name,类似于 mocker 的 .assert_call_with() 方法的工作方式,但我正在寻找类似 .assert_written_to 的东西。
python - `requests_mock` 适用于所有请求,即使它们未设置并抛出 NoMockAddress 异常
我发现requests_mock
用作固定装置pytest
适用于所有请求,即使它们没有设置。
我不确定这是requests_mock
/pytest
错误还是我遗漏了一些东西。最终,我不需要模拟 'api-b' 调用,但我不知道如何避免它。
我正在使用pytest
、requests-mock
和pytest-mock
为 API 端点编写集成测试。在后台,这个端点对我需要模拟的不同第三方 API 进行了多次调用。
其中一些调用可以被requests_mock
. 但其中一些不能,因为他们从第三方模块内部进行调用。
我试图用pytest-mock
mock最后一个,发现它基本上不起作用。
requests_mock
仍在尝试模拟该调用并引发下一个错误:
requests_mock.exceptions.NoMockAddress: No mock address: GET https://api-b.com/
python-3.x - Pytest 补丁:使用了不同的 Mock
我正在尝试修补一个名为 的导入类BotoAWSRequestsAuth
,因为我想断言一个使用身份验证的调用。
当我修补导入的类然后尝试在我的断言中使用补丁失败时,因为使用了不同的魔术模拟,我似乎无法弄清楚为什么会发生这种情况。
我得到的错误是:
我试图创建我的代码的提取和最小版本:
在使用身份验证的模块中:
在测试中:
我做错了什么很明显吗?也许我实际上根本没有嘲笑构造函数调用,因为实际对象看起来像BotoAWSRequestsAuth()
断言错误。
python - 如何根据输出错误重新运行特定的 pytest 测试
说如果 appium 抛出 webdriver 异常错误,那么只有那个特定的测试应该在 pytest 中重新运行
python - 为什么我不能修补 multiprocessing.Process?
所以我有这些文件:
发射器.py
常见的.py
现在我有了这个测试文件,用 pytest-mock 插件为 pytest 编写:
我无法让这个测试工作。
我尝试设置WHERE_TO_PATCH
为:
transmitter.MP.Process
common.MP.Process
multiprocessing.Process
它们都不起作用。我一直有错误AttributeError: 'TxWorker' object has no attribute 'canary'
。
我哪里做错了?
python - 在另一个函数中调用的模拟类方法
我想模拟一个类方法的输出,它由不同模块中定义的函数调用。例如:
类模块.py
函数模块.py
测试.py
但是,我得到一个AssertionError
说法[1,2,3] != []
。所以我想模拟永远不会发生在我想要的方法上。有人可以解释怎么做吗?为什么会这样?
编辑
实际上,显示的实现不起作用,因为测试正在启动一个完全独立的过程。因此,不能模拟任何函数。对不起我的误解
python - pytest-mock:在没有夹具和导入的情况下模拟不起作用是全局的
我正在使用 PyCharm Pro,并且我将 Python 解释器配置为来自 Docker 的远程解释器。
我的项目结构是这样的
我正在使用pytest
和pytest-mock
。
我定义了一个测试tests/package1/test_helper_functions.py
来测试package1.helper_functions.helper_func1
调用helpers.some_long_operation
我想模拟的这个函数的函数。
所以我愿意。
因此,当我执行测试时,原始helpers.some_long_operation
文件会被调用。
但是,当我在测试函数中创建一个夹具并在conftest.py
本地导入该函数时,模拟工作并且不会调用原始函数。
所以我在tests/package1/conftest.py
我在测试中使用这个夹具并package1.helper_functions.helper_func1
在函数内部本地导入。
现在我很好,这暂时有效,但我很好奇它为什么会发生。
python - 如何使用pytest测试用于生成报告的python函数?
我有一个读取 excel 文件并根据其内容生成报告的功能。如何在 pytest 中编写测试以检查文件是否生成并按预期创建报告?
测试涉及创建新文件以生成报告的功能时,最佳实践是什么?这个功能可以通过Mocking文件路径来测试吗?