zoukankan      html  css  js  c++  java
  • 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
    4
    ') # 依次输入2,4
    		
    		stub_stdout(self)
    		fun()
    		self.assertEqual(str(sys.stdout.getvalue()), '7
    ')
    		
    		stub_stdout(self) # 重置输出
    		fun()
    		self.assertEqual(str(sys.stdout.getvalue()), '9
    ')
    
    if __name__ == '__main__':
    	unittest.main()
    
  • 相关阅读:
    欧拉公式求四面体的体积
    欧拉公式求四面体的体积
    I
    I
    闭包传递(floyed)
    闭包传递(floyed)
    Python hypot() 函数
    Python cos() 函数
    Python atan2() 函数
    Python atan() 函数
  • 原文地址:https://www.cnblogs.com/flipped/p/9721632.html
Copyright © 2011-2022 走看看