问题标签 [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.
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
。
python - 如何模拟文件写入python中的多个文件
我正在尝试测试一个函数,其中一个调用会导致写入多个文件:
我希望我的测试检查每个调用是否按预期打开,并且内容是否已写入:
我在这里看到了一个处理两个文件的示例:Python mock builtin 'open' in a class using two different files
但是我不知道如何跟踪实际写入他们的内容。
python - Python测试是否没有调用函数
我是编写单元测试的新手,所以请原谅我缺乏知识。我看过以前的帖子,但仍然无法使其正常工作。
我有
如何实现从未调用过 mutility.operate 的测试?我不能在上面使用“.call”,因为它不可用。
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
?
python - 模拟修补python实例方法
在线和文档中有很多示例,用于修补类上的静态方法或模拟整个类。我想要做的是在我不拥有的库中的现有类上创建一个新方法 - requests.Response。
我尝试了下面的代码,但它似乎不起作用
我正在尝试做的事情可能吗?
python-3.x - 模拟作为默认参数传递的函数
我有一个 python 文件 ( a.py
),它定义了一个函数,以及一个在它的 init 方法中使用它作为默认参数并初始化另一个导入的类的类。这是我的a.py
我正在尝试useful_default_func
在我的测试文件中模拟。
但是,mock_default_func
没有打补丁,我的测试失败了,
python 模拟库相当新,所以不太确定,这里发生了什么或者我做错了什么或者我应该如何接近它?
python - 模拟 glob 的问题不需要 for 循环
我正在使用模拟来测试我开发的东西。在应用程序中,我使用glob循环查找目录中的某些内容,例如:'/tmp/*.png'。它将收集目录中的所有 .png 文件并返回该文件的列表。
当我模拟 glob 时,它会返回调用。然而,当用于循环时它并不顺利for
。
这是回报:
在 glob 被调用后,glob.glob(path)
它的返回值不会反映images
. 因此 for 循环不会开始bar(i)
也不会被调用,因此mock_os
不会返回任何调用。
python - 使用 mock.patch 禁用函数行为
我有一个为我的用户添加订阅的功能。在这个函数的最后,一个指令会检查订阅并在必要时与赞助人一起做一些事情。对于我的测试,我需要跳过最后一条指令;所以我尝试使用mock.patch
,但尽管我做了所有尝试,代码总是被执行(我的测试失败了)
我的模块/classes.py
测试/user_unitest.py
如何使用@mock.patch
(或其他模拟函数)不进入
User.check_subscriptions
方法?
我尝试了什么(但没有奏效)
感谢您一直以来的有用帮助
python - 尝试在方法上使用 mock.patch 时出现 ModuleNotFoundError
我的 pytest 单元测试不断返回错误 ModuleNotFoundError: No module name billing
。
奇怪的send_invoices
是,当我删除补丁语句时,可以调用计费模块中的方法。如果是这种情况,为什么 mock.patch 无法找到计费模块并修补方法?
billing.py
test.py