2014-09-26 3 views
0

Эй, я уже возился с Python, и мне нужно знать, есть ли способ тестирования, если результат скрипта Python что-то означает. Heres, что я пытался:Как проверить, что выводится из сценария Python?

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

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

Он просто распечатывает ответ на выполнение «a».

Что я делаю неправильно?

ответ

0

Попробуйте это:

Поместите код, который вы хотите проверить в одном из питона файла:

myFile.py

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

exec(a) 

Теперь используйте Баш скрипт для запуска, что питон скрипт и сохранить результат в другом файле (для сопоставлений)

test.sh

#!/bin/bash 
python myFile.py > output.txt 

Теперь, используя питон скрипт для вызова Баш скрипт, а затем проверить выходы (чтение из этого файла вывода) в соответствии с требованиями:

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

Смежные вопросы