问题标签 [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 - 使用 pytest-mock 检查调用顺序
在下面显示的代码片段中,我想测试函数中的函数调用顺序run()
,即f_3
在之后调用之后f_2
调用f_1
:
有什么办法可以做到这一点pytest-mock
吗?我试图在我的测试文件中模拟f_1
、f_2
和f_3
函数并使用assert_has_calls
with any_order=False
,但是没有成功。
提前感谢您的任何帮助或提示!
最好的,阿列克谢
python - 如何使用 pytest 模拟类属性
我有一堂这样的课。
当我试图像这样模拟名为'stdout'的自我属性时(使用pytest),
我收到以下错误。
那么,如何使用 pytest 或 pytest-mock 模拟“stdout”?
python - 如何在pytest中删除带有monkeypatch或mock的库?
如果我的库有一个contrib
额外的依赖项(比如requests
),我希望用户必须安装才能访问 CLI API,但是我在 CI 中的测试期间安装了额外的 contrib 如何使用pytest
'sMonkeyPatch
删除测试期间的依赖关系以确保我的检测是正确的?
例如,如果contrib
额外安装requests
,那么我希望用户必须这样做
然后能够在命令行拥有一个看起来像的 CLI API
wheremyfunction
使用requests
依赖
我如何在我的测试中模拟或猴子补丁, 以便我可以确保用户会正确地收到警告以及如果他们只是这样做requests
pytest
ModuleNotFoundError
? 在阅读了有关 pytest 标签的其他一些问题后,我仍然认为我不明白如何做到这一点,所以我在这里问。
python - 忽略要在 pytest 中测试的函数
我有一个场景,我希望 pytest 不测试函数并恢复测试执行。
在这里,我想忽略/跳过self.test2()
要执行的方法。我怎样才能通过简单地忽略来继续self.test2()
?
python - 如何使用 mocker.patch.object() 和 pytest-mock 模拟类实例并为该实例分配属性?
我正在尝试对一个模块进行单元测试(使用 pytest 和 pytest-mock),并且我想创建一个类的模拟实例,该类的属性具有某些值,以便在 @pytest.fixture 中使用
我想我终于在patch.object和autospeccing中找到了我想要的东西,但我不明白这些参数应该是什么,特别是“属性”
使用模拟对象修补对象(目标)上的命名成员(属性)。
我尝试搜索 patch.object() 示例,但我只看到与模拟类中方法的返回值相关的用例。
就像在这个例子中一样,一个方法作为“属性”参数传递给 patch.object()。
任何正确方向的帮助或提示将不胜感激!
python - 是否有内置的模拟对象可以传递给 Python 单元测试?
我通常Mock
在单元测试期间实例化一个对象。我厌倦了:
- 不得不打字
from unittest.mock import Mock
- 然后通过实例化一个
Mock
对象mock = Mock()
我想知道,pytest
, unittest.mock
,pytest-mock
等是否有内置的传递Mock
对象的方式?
这是我当前的工作流程:
研究
我知道pytest-mock
,我至少可以通过mocker
夹具绕过导入。
我希望能够做这样的事情:
pact - Pact:尝试设置模拟提供程序时出错
我正在尝试使用pytest编写我的第一个 Pact-python 测试,有人可以告诉我我的代码有什么问题吗?
来自堆栈跟踪的错误:
AttributeError:模块 'pact' 没有属性 'Like'
python-3.x - 如何在 Python 上设置模拟异常行为?
我正在使用定义内部异常(github3.exceptions.UnprocessableEntity)的外部库(github3.py)。这个异常是如何定义的并不重要,所以我想创建一个副作用并设置我从这个异常中使用的属性。
测试代码不是那么简单的例子:
我需要设置属性msg
以及errors
异常。所以我尝试使用 pytest-mock 在我的测试代码中:
这段代码的问题是,如果你有side_effect
and return_value
,Python 就会忽略 return_value。
这里的问题是我不想知道UnprocessableEntity
调用它的实现,将正确的参数传递给它的构造函数。另外,我没有找到使用 just 的其他方法side_effect
。我还尝试使用返回值并设置模拟类并以这种方式使用它:
这也不起作用,不会抛出异常。所以我不知道如何克服这个问题,因为我不想看到UnprocessableEntity
. 这里有什么想法吗?
python - 内部函数中的模拟默认参数值
我有以下(简化的)代码:
在我的测试中,我想模拟函数get_redis
以返回 的实例fakeredis.FakeStrictRedis()
,所以我这样做了
模拟函数没有效果,该foo
函数尝试使用 main 中的 get_redis 函数连接到真正的 redis。
如果我以这种方式写作有效
这可行,但我可以将 redis 作为默认值传递。我怎么能嘲笑?
python - Python模块中全局变量中使用的补丁方法
我正在尝试模拟模块中全局变量格式方法中使用的方法。我要测试的文件如下:
do_work.py
bar函数定义如下:
foo.py
测试定义如下:
test_foobar.py
即使在修补函数之后bar()
,带有 GLOBAL VARIABLE 的断言也会失败。我不确定为什么不模拟全局变量中使用的方法。有没有办法模拟这个?或者它是我们无法修补的东西,因为函数在它自己的范围内执行,然后变量作为静态值导入?