2014-09-26 57 views
0

嘿,我一直在搞乱Python,我需要知道如果有一种测试方式,如果Python脚本的输出等于什么。继承人我一直在尝试:如何测试Python脚本的输出是什么

a = """ 
print("Hey") 
b = 5 
print(str(b+5)) 
""" 

if str(exec(a)) == "Hey\n10": 
    print("True") 

它只是打印出执行'a'的答案。

我在做什么错?

回答

0

试试这个:

把你想要在一个Python文件来测试代码:

myFile.py

a = """ 
print("Hey") 
b = 5 
print(str(b+5)) 
""" 

exec(a) 

现在,使用bash脚本来运行Python脚本,并将结果在另一个文件(用于比较)

test.sh

#!/bin/bash 
python myFile.py > output.txt 

现在,使用Python脚本调用bash脚本,然后测试输出(从输出文件中读取)要求:

test.py

import subprocess 

subprocess.check_call("test.sh", shell=True) 
with open('output.txt') as infile: 
    output = infile.read() 
if output == "Hey\n10": 
    print("True") 
0

尝试更换默认SYS。标准输出

import sys 
from StringIO import StringIO 

a = """ 
print("Hey") 
b = 5 
print(str(b+5)) 
""" 


buffer = StringIO() 
sys.stdout = buffer 

exec (a) 
#remember to restore the original stdout! 
sys.stdout = sys.__stdout__ 

print buffer.getvalue() 

这样你就可以存储你的exec输出