【发布时间】:2014-09-26 05:15:18
【问题描述】:
嘿,我一直在搞 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
试试这个:
将要测试的代码放在一个 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.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()
这样你可以存储你的执行输出
【讨论】: