Как смоделировать функции в скрипте Python при выполнении скрипта с помощью команды Python - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь протестировать скрипт 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?

...