我是python 中mocking的新手
我想模拟子进程.check_call中出现的异常CalledProcessError,当异常发生时,我想检查ret值是否为1。
当我模拟下面的函数调用时,我得到并错误
def myFunc(cmd):
try:
ret = subprocess.check_call(cmd)
except subprocess.CalledProcessError as e:
ret = 1
return ret
def test_some_func():
with mock.patch('subprocess.check_call', side_effect=subprocess.CalledProcessError("Exception")):
ret = myFunc(["some_command"])
assert ret == 1
我得到并错误
with mock.patch('subprocess.check_call', side_effect=subprocess.CalledProcessError("Exception")):
E TypeError: __init__() missing 1 required positional argument: 'cmd'
有人能告诉我缺了什么吗?有没有一本关于python嘲讽的好教程/书?
向CalledProcessError添加参数后,缺少。
def test_some_func():
with mock.patch('subprocess.check_call',
side_effect=subprocess.CalledProcessError('127',
'some_command'):
ret = myFunc(["some_command"])
assert ret == 1