python检测输入的东西_Python unittest 测试输入(input)和输出(print)

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值