问题标签 [python-unittest.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 投票
3 回答
1844 浏览

python - 用方法补丁(装饰器)覆盖类补丁

我在一个类中有几个测试方法,它们对对象使用一种类型的修补,所以我用类装饰器进行了修补。对于另一种方法,我想以不同的方式修补同一个对象。我尝试了以下方法,但是尽管方法本身被不同的补丁装饰,但作为类装饰器制作的补丁仍然有效。我希望方法补丁覆盖类补丁。为什么不是这样?

在这种特殊情况下,我可以删除类补丁并修补单个方法,但这将是重复的。如何实现这种覆盖(方法覆盖类补丁)机制?

0 投票
2 回答
46848 浏览

python - Python 模拟 call_args_list 解包元组以对参数进行断言

我在处理Mock.call_args_list返回的嵌套元组时遇到了一些麻烦。

我想知道是否有更好的方法来解压缩模拟对象上的 call_args_list 以便做出我的断言。这个循环有效,但感觉必须有更直接的方式。

0 投票
0 回答
556 浏览

python-2.7 - TypeError:使用模拟的 Python 单元测试

我正在尝试使用 python mock 测试一个函数。

foo.py

这种方法的单元是:

测试.py

堆栈跟踪在这里没有多大帮助。可能是我错过了明显的。这是它

我确实检查了 mock.py 的代码,但无法发现这里出了什么问题。

0 投票
2 回答
1926 浏览

python - 如何使用 unittest.mock 从代码中删除副作用?

我有一个有几个故障点的功能:

我想测试是否捕获了所有相关异常(尽管目前处理得不好)。

我有一个通过的初始测试用例:

但是我怎样才能让我的测试框架相信 AUTH_URL 实际上是一个有效/可访问的 URL?

我创建了一个模拟类Foo

我的想法是模拟调用并消除引发异常setup_foo的副作用。UnreachableEndpoint我知道如何副作用添加到Mockwith unittest.mock,但是如何删除它们?

0 投票
0 回答
373 浏览

python - 在多个模块中修补全局变量一次

想象一下,我们有一个one.py带有一些全局变量的模块glob_var=object()。此外,我还有一些不同级别的其他模块glob_var使用相对导入进行导入,例如:

  • from .one.py import glob_var
  • from ..one.py import glob_var
  • from ...one.py import glob_var

我想修补glob_var一次,而不是为那些导入变量的模块修补三次。是否可以实施?

PS不一定是全局变量。它可以是一个函数或其他对象

0 投票
2 回答
2375 浏览

python - 仅在一个模块中的补丁方法

例如,我有一些foo.py带有下一个代码的模块():

bar.py和具有类似代码的模块:

我只是不明白为什么接下来会发生:

他们是两个嘲笑: <MagicMock name='get().content' id='4352254472'> <MagicMock name='get().content' id='4352254472'> 似乎只修补foo.get_ip方法with patch('foo.requests.get'),但事实并非如此。我知道我可以bar.get_fb调用超出with范围,但在某些情况下,我只是在上下文管理器中运行一种调用许多其他方法的方法,而我只想requests在一个模块中进行修补。有没有办法解决这个问题?不更改模块中的导入

0 投票
1 回答
1892 浏览

python - 如何将 mock.patch(...).start() 的返回值附加到父模拟?

模拟示例列出了此示例

我想完成同样的事情,但是通过显式start调用stop修补程序而不是上下文管理器,它似乎patcher.start()返回的东西在与上下文化的相同意义上并不是真正的模拟,至少就将它们附加到父模拟的能力:

我是否遗漏了什么,或者这是一个错误,以及模拟几个这样的调用并验证它们是否都按预期顺序进行的最佳方法是什么?

0 投票
2 回答
5043 浏览

python - 模拟python类中的属性以进行单元测试

self.var由于名称服务器查找失败,我想在我的单元测试中模拟。我已经尝试了很多东西patch,但我无法让它工作。模拟的最佳方式是self.var什么?

我的班级定义如下:

我的单元测试是这样的:

0 投票
1 回答
3245 浏览

python - 使用 unittest.mock 模拟枚举不能按预期工作

我正在尝试在 Python 中模拟一个枚举,以便我可以断言测试的类的方法是否调用枚举上的方法。

这不能按预期工作。有问题的方法永远不会被调用,因为模拟与实际枚举的身份比较总是失败。

0 投票
1 回答
1840 浏览

python - pytest:如何获取从模拟类返回的(模拟)实例?

我一定很累,因为肯定有一种简单的方法可以做到这一点。但是我已经阅读了 pytest 文档并且无法弄清楚这个简单的用例。

我有一个小包要测试:

我想确保(1)创建一个实例,并使用正确的参数调用MyClass(2) 。my_method

所以这是我的测试:

我知道每次生产代码调用框架时都会产生一个新的模拟实例MyClass()unittest

但是我如何获得这些实例呢?

我想写一些类似的东西:

但我从哪里得到the_instance