我正在嘗試編寫 unittest 來檢查是否subprocess.call()在不返回任何內(nèi)容的函數(shù) flash_it 中調(diào)用。def flash_it('flash.bat'): file = open('file.txt', 'w') subprocess.call(['flash.bat', '-d'], stdout = file, stderr = subprocess.STDOUT)@mock.patch('subprocess.call')def test_subprocess_call_passed(self, mock_subproc_call): main.flash_it('flash.bat') self.assertTrue(mock_subproc_call.called)
1 回答

qq_遁去的一_1
TA貢獻1725條經(jīng)驗 獲得超8個贊
你可能需要這樣的東西:
import subprocess
import mock
def flash_it(filename):
with open(filename, 'w') as f:
subprocess.call(['cmd to flash', '-d'], stdout=f, stderr=subprocess.STDOUT)
@mock.patch('subprocess.call')
def test_subprocess_call_passed(mock_subproc_call):
flash_it('flash.bat')
mock_subproc_call.assert_called_once()
請注意,我實際上并沒有運行它。
當(dāng)然也assert_called_once_with
有讓你斷言傳遞給函數(shù)的參數(shù)。檢查文檔:https ://docs.python.org/3/library/unittest.mock.html
編輯:好的,我已經(jīng)用 pytest 運行了它:
添加回答
舉報
0/150
提交
取消