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

python - 在 pathlib.Path 上模拟 open() 以返回带有 unittest.mock 的模拟文件句柄

假设我有一个方法可以传递一些路径,读取每个路径中的文件,然后返回从文件名到文件内容的字典,如下所示:

现在说我想测试如果我传入例如C:\wherever\file_name.xyz返回的字典是否包含 key file_name.xyz。由于我的测试方法是打开和读取文件,我想模拟出 Path 对象。我想我可以做类似的事情

但我不知道如何让f.name(即mock_path.open().name)返回file_name.xyz

0 投票
2 回答
668 浏览

python - 如何模拟文件写入python中的多个文件

我正在尝试测试一个函数,其中一个调用会导致写入多个文件:

我希望我的测试检查每个调用是否按预期打开,并且内容是否已写入:

我在这里看到了一个处理两个文件的示例:Python mock builtin 'open' in a class using two different files

但是我不知道如何跟踪实际写入他们的内容。

0 投票
1 回答
337 浏览

python - 在类和方法上组合 @mock.patch 时的顺序

当一个方法应该在测试用例中被模拟时,可以在 python框架中应用@mock.patch装饰器(参见1):unittest

根据文档2,也可以将 应用@mock.patch为类装饰器:

因此,将这两种方法结合起来也应该是可能和合理的:

现在我想知道模拟以什么顺序传递给test_stuff. mock_method_A模拟method1or也是如此method2

0 投票
1 回答
59 浏览

python - Python测试是否没有调用函数

我是编写单元测试的新手,所以请原谅我缺乏知识。我看过以前的帖子,但仍然无法使其正常工作。

我有

如何实现从未调用过 mutility.operate 的测试?我不能在上面使用“.call”,因为它不可用。

0 投票
1 回答
2546 浏览

python - 使用模拟检查函数时调用 PicklingError

我在测试一个方法是否被调用时遇到了麻烦mock——举个简单的例子,假设该方法是os.getcwd. 我想测试我自己的函数 ,是否按预期pickle_wdir调用。os.getcwd但是,我正在测试的函数腌制由返回的值os.getcwd,这会导致错误。

这是一个重现错误的简单示例。

os_ex.py

test_os_ex.py

返回的错误信息是

_pickle.PicklingError: Can't pickle <class 'unittest.mock.MagicMock'>: it's not the same object as unittest.mock.MagicMock.

我如何在os.getcwd没有得到这个的情况下测试那个被调用的PicklingError

0 投票
0 回答
60 浏览

python - 模拟修补python实例方法

在线和文档中有很多示例,用于修补类上的静态方法或模拟整个类。我想要做的是在我不拥有的库中的现有类上创建一个新方法 - requests.Response

我尝试了下面的代码,但它似乎不起作用

我正在尝试做的事情可能吗?

0 投票
1 回答
38 浏览

python-3.x - 模拟作为默认参数传递的函数

我有一个 python 文件 ( a.py),它定义了一个函数,以及一个在它的 init 方法中使用它作为默认参数并初始化另一个导入的类的类。这是我的a.py

我正在尝试useful_default_func在我的测试文件中模拟。

但是,mock_default_func没有打补丁,我的测试失败了,

python 模拟库相当新,所以不太确定,这里发生了什么或者我做错了什么或者我应该如何接近它?

0 投票
1 回答
1058 浏览

python - 模拟 glob 的问题不需要 for 循环

我正在使用模拟来测试我开发的东西。在应用程序中,我使用glob循环查找目录中的某些内容,例如:'/tmp/*.png'。它将收集目录中的所有 .png 文件并返回该文件的列表。

当我模拟 glob 时,它会返回调用。然而,当用于循环时它并不顺利for

这是回报:

在 glob 被调用后,glob.glob(path)它的返回值不会反映images. 因此 for 循环不会开始bar(i)也不会被调用,因此mock_os不会返回任何调用。

0 投票
0 回答
593 浏览

python - 使用 mock.patch 禁用函数行为

我有一个为我的用户添加订阅的功能。在这个函数的最后,一个指令会检查订阅并在必要时与赞助人一起做一些事情。对于我的测试,我需要跳过最后一条指令;所以我尝试使用mock.patch ,但尽管我做了所有尝试,代码总是被执行(我的测试失败了)


我的模块/classes.py


测试/user_unitest.py

如何使用@mock.patch(或其他模拟函数)不进入 User.check_subscriptions方法?


我尝试了什么(但没有奏效)

感谢您一直以来的有用帮助

0 投票
3 回答
6130 浏览

python - 尝试在方法上使用 mock.patch 时出现 ModuleNotFoundError

我的 pytest 单元测试不断返回错误 ModuleNotFoundError: No module name billing

奇怪的send_invoices是,当我删除补丁语句时,可以调用计费模块中的方法。如果是这种情况,为什么 mock.patch 无法找到计费模块并修补方法?

billing.py

test.py