小编Cur*_*hie的帖子

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

我正在尝试使用子进程(Python27)通过 python 命令测试 python 脚本。当我这样测试时,有没有办法模拟脚本中使用的函数?

例如,

示例.py

import example1

if __name__ == '__main__':
   result = example1.testfunction()
   print result

Run Code Online (Sandbox Code Playgroud)

示例1.py

def testfunction():
   print "testing"
   return True

Run Code Online (Sandbox Code Playgroud)

我想测试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)

Run Code Online (Sandbox Code Playgroud)

基本上,该补丁在我的代码中不起作用,我得到的输出是

True
AssertionError: True is not false

Run Code Online (Sandbox Code Playgroud)

有没有办法模拟testfunction()in example1.py

我可以强制testfunction()返回False以便我的输出是吗False …

python subprocess mocking python-unittest

6
推荐指数
0
解决办法
1237
查看次数

Python:使用 os.environ.get 时出现 TypeError

我想在我的 python 脚本中访问一个 shell 环境变量。我正在尝试这个

import os
print os.environ.get["HOME"]
Run Code Online (Sandbox Code Playgroud)

在 python 中执行时出现此错误(我在 bash 中也遇到相同的错误)

Traceback (most recent call last):
  File "C:\Users\sraparim\Desktop\GitHub issues\issue #1187\test.py", line 54, in <module>
    print os.environ.get["HOME"]
TypeError: 'instancemethod' object has no attribute '__getitem__'
[Finished in 0.2s with exit code 1]
[shell_cmd: python -u "C:\Users\sraparim\Desktop\GitHub issues\issue #1187\test.py"]
[dir: C:\Users\sraparim\Desktop\GitHub issues\issue #1187]
[path: C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\WebEx\Productivity Tools;C:\Program Files (x86)\Cisco\OSD-ShellApplications;C:\Program Files (x86)\Sennheiser\SoftphoneSDK\;C:\Program Files\PuTTY\;C:\Python27\Scripts;C:\Python27;C:\Python27]
Run Code Online (Sandbox Code Playgroud)

请帮忙...

python windows bash

2
推荐指数
1
解决办法
4507
查看次数

标签 统计

python ×2

bash ×1

mocking ×1

python-unittest ×1

subprocess ×1

windows ×1