使用python命令执行脚本时如何在python脚本中模拟函数

时间:2019-04-04 22:59:38

标签: python mocking subprocess python-unittest

我正在尝试使用子进程(Python27)通过python命令测试python脚本。当我像这样测试时,是否可以模拟脚本中使用的功能?

例如,

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吗?

0 个答案:

没有答案