如何对 subprocess.call() 进行单元测试以检查它是否在 python 中调用

我正在尝试编写 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)


沧海一幻觉
浏览 72回答 1
1回答

qq_遁去的一_1

你可能需要这样的东西:import subprocessimport mockdef 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 运行了它:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python