如何测试Python脚本的输出

时间:2014-09-26 05:15:19

标签: python

嘿,我一直在搞乱Python,我需要知道是否有一种方法可以测试Python Script的输出是否等于某些东西。这是我一直在尝试的事情:

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

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

它只打印出执行' a'。

的答案

我做错了什么?

2 个答案:

答案 0 :(得分: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")

答案 1 :(得分:0)

尝试替换默认的sys.stdout

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输出