Python reset_mock()获得意外的关键字参数';返回u值'—;为什么?
根据文档,Python reset_mock()获得意外的关键字参数';返回u值'—;为什么?,python,unit-testing,mocking,Python,Unit Testing,Mocking,根据文档,reset\u mock接受返回值和副作用关键字参数。但是当我尝试使用它时,我得到一个类型错误: 来自unittest.mock导入修补程序的 进口大熊猫 def foo(): 返回pandas.read\u csv(“/dev/null”) @补丁(“pandas.read_csv”,autospec=True) def测试_foo(pr): pr.return_值=42 foo() pr.reset\u mock(返回值=真) foo() 使用pytest运行时提供: =====
reset\u mock
接受返回值
和副作用
关键字参数。但是当我尝试使用它时,我得到一个类型错误:
来自unittest.mock导入修补程序的
进口大熊猫
def foo():
返回pandas.read\u csv(“/dev/null”)
@补丁(“pandas.read_csv”,autospec=True)
def测试_foo(pr):
pr.return_值=42
foo()
pr.reset\u mock(返回值=真)
foo()
使用pytest
运行时提供:
============================= test session starts ==============================
platform linux -- Python 3.7.3, pytest-5.3.0, py-1.8.0, pluggy-0.13.0
rootdir: /tmp
plugins: mock-1.12.1, cov-2.8.1
collected 1 item
mwe17.py F [100%]
=================================== FAILURES ===================================
___________________________________ test_foo ___________________________________
pr = <function read_csv at 0x7fdeff5ddbf8>
@patch("pandas.read_csv", autospec=True)
def test_foo(pr):
pr.return_value = 42
foo()
> pr.reset_mock(return_value=True)
E TypeError: reset_mock() got an unexpected keyword argument 'return_value'
mwe17.py:11: TypeError
============================== 1 failed in 2.83s ===============================
=================================================测试会话开始==============================
平台linux——Python 3.7.3、pytest-5.3.0、py-1.8.0、pluggy-0.13.0
rootdir:/tmp
插件:mock-1.12.1,cov-2.8.1
收集1项
mwe17.py F[100%]
======================================================故障===================================
___________________________________考夫___________________________________
pr=
@补丁(“pandas.read_csv”,autospec=True)
def测试_foo(pr):
pr.return_值=42
foo()
>pr.reset\u mock(返回值=真)
E TypeError:reset\u mock()获得意外的关键字参数“return\u value”
mwe17.py:11:类型错误
===========================================1在2.83秒内失败===============================
当我模拟os.mkdir
而不是pandas.read\u csv
时,它确实有效
为什么当模拟一个函数时,
reset\u mock
无法接受此关键字参数,而模拟另一个函数时会接受此关键字参数 从patch
调用中删除autospec=True
为我解决了这个问题