在Python单元测试中测试stdout

时间:2014-08-13 21:49:13

标签: python unit-testing while-loop stdout

大家好,过去一周,我一直在用不同类型的场景练习单元测试。我看到单元测试的重要性,并希望尽可能熟悉它们。下面是一个基本的倒数计时器。我想测试While循环后显示的输出。这是我试图测试的代码。

Timer = 11

while Timer > 0:
    Timer = Timer - 1
    print(Timer)

print("Times Up!")

这是我用于简单的Hello World计划的测试套件,但它没有用。我假设是因为我在while循环中进行了输出。那么我将如何测试" Times Up!"

import unittest
import sys
import io

from PopListTestView4 import *

class UnitTest(unittest.TestCase):


    def test_Output(self):

        saved_stdout = sys.stdout
            try:
                out = io.StringIO()
                sys.stdout = out
                output = out.getvalue().strip()
                assert output == 'Times up!'
            finally:
                sys.stdout = saved_stdout


if __name__ == "__main__":
    suite = unittest.TestLoader().loadTestsFromTestCase(UnitTest)
    unittest.TextTestRunner(verbosity=2).run(suite)

1 个答案:

答案 0 :(得分:1)

assert output.endswith('Times up!')

Python文档中的

str.endswithhttps://docs.python.org/2/library/stdtypes.html#str.endswith