第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何模擬: pytest.raises 沒有引發(fā)

如何模擬: pytest.raises 沒有引發(fā)

MMMHUHU 2023-09-26 17:28:57
我正在用于subprocess一項(xiàng)任務(wù),并且我有一個(gè)try/except用于捕獲的塊TimeoutExpired。我嘗試使用來模擬我的對(duì)象,side_effect這樣我就可以使用 來捕獲假異常pytest.raises。無論我做什么,我都會(huì)得到DID NOT RAISE <class 'subprocess.TimeoutExpired'>。我嘗試過很多事情,盡管我對(duì)嘲笑沒有那么豐富的經(jīng)驗(yàn),但我相信類似的事情原則上應(yīng)該有效:# my_check.pyfrom subprocess import TimeoutExpired, PIPE, check_outputclass Check:    def __init__(self, name):        self.name = name        self.status = self.get_status()    def get_status(self):        try:            out = check_output(["ls"], universal_newlines=True, stderr=PIPE, timeout=2)        except TimeoutExpired as e:            print(f"Command timed out: {e}")            raise        if self.name in out:            return True        return False# test_my_check.pyimport pytestfrom unittest import mockfrom subprocess import TimeoutExpired@mock.patch("src.my_check.Check", autospec=True)def test_is_installed_exception(check_fake):    check_fake.get_status.side_effect = TimeoutExpired    obj_fake = check_fake("random_file.txt")    with pytest.raises(TimeoutExpired):        obj_fake.get_status()由于某種原因它不起作用,但我無法理解出了什么問題。
查看完整描述

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í)例


查看完整回答
反對(duì) 回復(fù) 2023-09-26
  • 1 回答
  • 0 關(guān)注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)