嘿,我一直在搞乱Python,我需要知道是否有一种方法可以测试Python Script的输出是否等于某些东西。这是我一直在尝试的事情:
a = """
print("Hey")
b = 5
print(str(b+5))
"""
if str(exec(a)) == "Hey\n10":
print("True")
它只打印出执行' a'。
的答案我做错了什么?
答案 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输出