如何在python测试中模拟子进程.check_call异常



我是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

最新更新