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.Popen
Auftritt. 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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint ungewöhnlich zu mir, dass Sie die patch-Dekorateur über die
run_script
Funktion, da Sie sich nicht über ein mock-argument gibt.Wie wäre es damit:
Recht jetzt, Ihr verspottet Teilprozess.Popen scheint zurück ein Tupel, causeing Prozess.kommunizieren, (), zu erhöhen
TypeError: 'tuple' object is not callable.
. Daher ist es wichtig, um die return_value auf mock_subproc_popen genau das richtige.InformationsquelleAutor PawelP