Python unittest 测试输入(input)和输出(print)
2021-06-17 04:03
标签:ddc put add class 标准输入输出 port puts testcase == Python 自带的 unittest 库可以用来写单元测试。 测试输入输出的解决方法是: Python unittest 测试输入(input)和输出(print) 标签:ddc put add class 标准输入输出 port puts testcase == 原文地址:https://www.cnblogs.com/flipped/p/9721632.html
将标准输入输出定向到一个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第十二天
文章标题:Python unittest 测试输入(input)和输出(print)
文章链接:http://soscw.com/essay/94870.html