Я пытаюсь протестировать скрипт python с помощью команды python, используя подпроцесс (Python27). Есть ли способ смоделировать функции, используемые в скрипте, когда я тестирую, как это?
Например,
example.py
import example1
if __name__ == '__main__':
result = example1.testfunction()
print result
example1.py
def testfunction():
print "testing"
return True
Я бы хотел протестировать скрипт example.py
следующим образом
test_example.py
import unittest
import subprocess
import mock
from mock import patch
class Example(unittest.TestCase):
@patch('example1.testfunction')
def test_example_script(self, mock_testfunction):
mock_testfunction.returnvalue = False
cmd = ["python", "example.py"]
task = subprocess.Popen(cmd)
stdout, stderr = task.communicate()
print stdout
self.assertFalse(stdout)
По сути, патч не работает в моем коде, и я получаю вывод
True
AssertionError: True is not false
Есть ли способ высмеять testfunction()
в example1.py
?
Могу ли я заставить testfunction()
вернуть False
, чтобы мой вывод был False
?