问题标签 [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 投票
2 回答
291 浏览

python - 使用 pytest-mock 检查调用顺序

在下面显示的代码片段中,我想测试函数中的函数调用顺序run(),即f_3在之后调用之后f_2调用f_1

有什么办法可以做到这一点pytest-mock吗?我试图在我的测试文件中模拟f_1f_2f_3函数并使用assert_has_callswith any_order=False,但是没有成功。

提前感谢您的任何帮助或提示!

最好的,阿列克谢

0 投票
1 回答
546 浏览

python - 如何使用 pytest 模拟类属性

我有一堂这样的课。

当我试图像这样模拟名为'stdout'的自我属性时(使用pytest),

我收到以下错误。

那么,如何使用 pytest 或 pytest-mock 模拟“stdout”?

0 投票
1 回答
498 浏览

python - 如何在pytest中删除带有monkeypatch或mock的库?

如果我的库有一个contrib额外的依赖项(比如requests),我希望用户必须安装才能访问 CLI API,但是我在 CI 中的测试期间安装了额外的 contrib 如何使用pytest'sMonkeyPatch删除测试期间的依赖关系以确保我的检测是正确的?

例如,如果contrib额外安装requests,那么我希望用户必须这样做

然后能够在命令行拥有一个看起来像的 CLI API

wheremyfunction使用requests依赖

我如何在我的测试中模拟或猴子补丁 以便我可以确保用户会正确地收到警告以及如果他们只是这样做requestspytestModuleNotFoundError

? 在阅读了有关 pytest 标签的其他一些问题后,我仍然认为我不明白如何做到这一点,所以我在这里问。

0 投票
1 回答
93 浏览

python - 忽略要在 pytest 中测试的函数

我有一个场景,我希望 pytest 不测试函数并恢复测试执行。

在这里,我想忽略/跳过self.test2()要执行的方法。我怎样才能通过简单地忽略来继续self.test2()

0 投票
1 回答
362 浏览

python - 如何使用 mocker.patch.object() 和 pytest-mock 模拟类实例并为该实例分配属性?

我正在尝试对一个模块进行单元测试(使用 pytest 和 pytest-mock),并且我想创建一个类的模拟实例,该类的属性具有某些值,以便在 @pytest.fixture 中使用

我想我终于在patch.objectautospeccing中找到了我想要的东西,但我不明白这些参数应该是什么,特别是“属性”

使用模拟对象修补对象(目标)上的命名成员(属性)。

我尝试搜索 patch.object() 示例,但我只看到与模拟类中方法的返回值相关的用例。

就像在这个例子中一样,一个方法作为“属性”参数传递给 patch.object()。

任何正确方向的帮助或提示将不胜感激!

0 投票
1 回答
59 浏览

python - 是否有内置的模拟对象可以传递给 Python 单元测试?

我通常Mock在单元测试期间实例化一个对象。我厌倦了:

  1. 不得不打字from unittest.mock import Mock
  2. 然后通过实例化一个Mock对象mock = Mock()

我想知道,pytest, unittest.mock,pytest-mock等是否有内置的传递Mock对象的方式?

这是我当前的工作流程:


研究

我知道pytest-mock,我至少可以通过mocker夹具绕过导入。

我希望能够做这样的事情:

0 投票
1 回答
452 浏览

pact - Pact:尝试设置模拟提供程序时出错

我正在尝试使用pytest编写我的第一个 Pact-python 测试,有人可以告诉我我的代码有什么问题吗?

来自堆栈跟踪的错误:

AttributeError:模块 'pact' 没有属性 'Like'

0 投票
1 回答
161 浏览

python-3.x - 如何在 Python 上设置模拟异常行为?

我正在使用定义内部异常(github3.exceptions.UnprocessableEntity)的外部库(github3.py)。这个异常是如何定义的并不重要,所以我想创建一个副作用并设置我从这个异常中使用的属性。

测试代码不是那么简单的例子:

我需要设置属性msg以及errors异常。所以我尝试使用 pytest-mock 在我的测试代码中:

这段代码的问题是,如果你有side_effectand return_valuePython 就会忽略 return_value

这里的问题是我不想知道UnprocessableEntity调用它的实现,将正确的参数传递给它的构造函数。另外,我没有找到使用 just 的其他方法side_effect。我还尝试使用返回值并设置模拟并以这种方式使用它:

这也不起作用,不会抛出异常。所以我不知道如何克服这个问题,因为我不想看到UnprocessableEntity. 这里有什么想法吗?

0 投票
2 回答
201 浏览

python - 内部函数中的模拟默认参数值

我有以下(简化的)代码:

在我的测试中,我想模拟函数get_redis以返回 的实例fakeredis.FakeStrictRedis(),所以我这样做了

模拟函数没有效果,该foo函数尝试使用 main 中的 get_redis 函数连接到真正的 redis。

如果我以这种方式写作有效

这可行,但我可以将 redis 作为默认值传递。我怎么能嘲笑?

0 投票
0 回答
236 浏览

python - Python模块中全局变量中使用的补丁方法

我正在尝试模拟模块中全局变量格式方法中使用的方法。我要测试的文件如下:

do_work.py

bar函数定义如下:

foo.py

测试定义如下:

test_foobar.py

即使在修补函数之后bar(),带有 GLOBAL VARIABLE 的断言也会失败。我不确定为什么不模拟全局变量中使用的方法。有没有办法模拟这个?或者它是我们无法修补的东西,因为函数在它自己的范围内执行,然后变量作为静态值导入?