[英]How to mock a subprocess.check_call exception in python test
我是 python 中 mocking 的新手
我想模擬一個來自 subprocess.check_call 的異常 CalledProcessError,當異常發生時我想檢查 ret 值是否為 1。
當我如下模擬 function 調用時,我得到了錯誤
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 mocking 的好教程/書?
將 arguments 添加到 CalledProcessError 后丟失。
def test_some_func(): with mock.patch('subprocess.check_call', side_effect=subprocess.CalledProcessError('127', 'some_command'): ret = myFunc(["some_command"]) 斷言 ret == 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.