1 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果你想測(cè)試一個(gè)類()的功能,Check你不能模擬該類。您必須模擬您想要更改的調(diào)用 - 在這種情況下可能是check_output您想要引發(fā)異常的調(diào)用:
@mock.patch("src.my_check.check_output")
def test_is_installed_exception(mocked_check_output):
mocked_check_output.side_effect = TimeoutExpired("check_output", 1)
with pytest.raises(TimeoutExpired):
Check("random_file.txt")
一些注意事項(xiàng):
你必須修補(bǔ)“src.my_check.check_output”,因?yàn)槟銓?dǎo)入
check_output
使用from subprocess import check_output
,所以你使用類中的引用你必須構(gòu)造一個(gè)有效的
TimeoutExpired
對(duì)象 - 它需要 2 個(gè)參數(shù),所以你必須提供它們正如
get_status
已經(jīng)調(diào)用的那樣__init__
,您必須測(cè)試類構(gòu)造 - 由于引發(fā)的異常,您無法獲得正確構(gòu)造的實(shí)例
添加回答
舉報(bào)