嘿,我一直在搞亂Python,我需要知道如果有一種測試方式,如果Python腳本的輸出等於什麼。繼承人我一直在嘗試:如何測試Python腳本的輸出是什麼
a = """
print("Hey")
b = 5
print(str(b+5))
"""
if str(exec(a)) == "Hey\n10":
print("True")
它只是打印出執行'a'的答案。
我在做什麼錯?
嘿,我一直在搞亂Python,我需要知道如果有一種測試方式,如果Python腳本的輸出等於什麼。繼承人我一直在嘗試:如何測試Python腳本的輸出是什麼
a = """
print("Hey")
b = 5
print(str(b+5))
"""
if str(exec(a)) == "Hey\n10":
print("True")
它只是打印出執行'a'的答案。
我在做什麼錯?
試試這個:
把你想要在一個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")
嘗試更換默認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輸出