2014-09-26 53 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輸出