我正在尝试使用子进程(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 脚本中访问一个 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)
请帮忙...