我正在嘗試編寫 unittest 來檢查是否subprocess.call()在不返回任何內容的函數 flash_it 中調用。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條經驗 獲得超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()
請注意,我實際上并沒有運行它。
當然也assert_called_once_with
有讓你斷言傳遞給函數的參數。檢查文檔:https ://docs.python.org/3/library/unittest.mock.html
編輯:好的,我已經用 pytest 運行了它:
添加回答
舉報
0/150
提交
取消