Mocking ein Teilprozess call-in Python

Habe ich eine Methode (run_script) würde es gerne testen. Speziell möchte ich testen, ob ein Aufruf subprocess.PopenAuftritt. Noch besser wäre es, zu testen, dass subprocess.Popen Aufruf mit bestimmten Parametern. Wenn ich den test ausführen, jedoch bekomme ich TypeError: 'tuple' object is not callable.

Wie kann ich testen, meine Methode, um sicherzustellen, dass Teilprozess ist eigentlich aufgerufen, mit mocks?

@mock.patch('subprocess.Popen')
def run_script(file_path):
  process = subprocess.Popen(['myscript', -M, file_path], stdout=subprocess.PIPE)
  output,err = process.communicate()
  return process.returncode

def test_run_script(self, mock_subproc_popen):
  mock_subproc_popen.return_value = mock.Mock(communicate=('ouput','error'), returncode=0)
  am.account_manager("path")
  self.assertTrue(mock_subproc_popen.called)

InformationsquelleAutor steve | 2014-09-05

Schreibe einen Kommentar