【问题标题】:How do I test what the output is of a Python Script [duplicate]如何测试 Python 脚本的输出 [重复]
【发布时间】: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


    【解决方案1】:

    试试这个:

    将要测试的代码放在一个 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")
    

    【讨论】:

      【解决方案2】:

      尝试替换默认的 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()
      

      这样你可以存储你的执行输出

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-29
        • 1970-01-01
        • 2012-02-24
        • 1970-01-01
        • 2011-07-19
        • 2019-07-05
        • 2011-03-24
        • 2011-08-23
        相关资源
        最近更新 更多