我正在尝试编写 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条经验 获得超7个赞
你可能需要这样的东西:
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
提交
取消