簡體   English   中英

如何在 python 測試中模擬 subprocess.check_call 異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM