码迷,mamicode.com
首页 > 编程语言 > 详细

Python unittest 测试输入(input)和输出(print)

时间:2018-09-29 01:20:53      阅读:430      评论:0      收藏:0      [点我收藏+]

标签:ddc   put   add   class   标准输入输出   port   puts   testcase   ==   

Python 自带的 unittest 库可以用来写单元测试。

测试输入输出的解决方法是:
将标准输入输出定向到一个StringIO类(python3是 io.StringIO)。

import unittest
import io
import sys


def stub_stdin(testcase_inst, inputs):
    stdin = sys.stdin
    def cleanup():
        sys.stdin = stdin

    testcase_inst.addCleanup(cleanup)
    sys.stdin = io.StringIO(inputs)


def stub_stdout(testcase_inst):
    stderr = sys.stderr
    stdout = sys.stdout

    def cleanup():
        sys.stderr = stderr
        sys.stdout = stdout

    testcase_inst.addCleanup(cleanup)
    sys.stderr = io.StringIO()
    sys.stdout = io.StringIO()


def fun():
    x = int(input())
    print(x+5)


class UnitTest(unittest.TestCase):
    def test_fun(self):
        stub_stdin(self, '2\n4\n') # 依次输入2,4
        
        stub_stdout(self)
        fun()
        self.assertEqual(str(sys.stdout.getvalue()), '7\n')
        
        stub_stdout(self) # 重置输出
        fun()
        self.assertEqual(str(sys.stdout.getvalue()), '9\n')

if __name__ == '__main__':
    unittest.main()

Python unittest 测试输入(input)和输出(print)

标签:ddc   put   add   class   标准输入输出   port   puts   testcase   ==   

原文地址:https://www.cnblogs.com/flipped/p/9721632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!