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)的更多相关文章

  1. Python输入input、输出print

    1.输入input input是用于输入数据给变量.通过键盘输入的是字符串,如果需要其他格式,需要做转换.比如int.float类型数据,int() 如下是一个例子: 如果a不进行int转换,那么输入 ...

  2. Python中的输入(input)和输出打印

    目录 最简单的打印 打印数字 打印字符 字符串的格式化输出 python中让输出不换行 以下的都是在Python3.X环境下的 使用 input 函数接收用户的输入,返回的是 str 字符串 最简单的 ...

  3. 深入比特币原理(三)——交易的输入(input)与输出(output)

    本节内容非常重要,如果你不能很好的掌握本节内容,你无法真正理解比特币的运行原理,请务必要学习清楚. 比特币的交易模型为UTXO(unspend transaction output),即只记录未花费的 ...

  4. python:unittest(测试框架)

    一,基本概念 TestCase:所有测试用例的基类 TestLoad:加载测试用例,返回TestSuite(测试套件) TestSuite:创建测试套件 TextTestRunner:运行测试用例 T ...

  5. 四、用户交互(输入input,格式化输出)与运算符

    1.接收用户的输入 在Python3:input会将用户输入的所有内容都存成字符串类型 列: username = input("请输入您的账号:") # "egon&q ...

  6. python unittest 测试笔记(一)

    测试最基本的原理就是比较预期结果是否与实际执行结果相同,如果相同则测试成功,否则测试失败. python 单元测试官方文档: [Python: 2.7] (https://docs.python.or ...

  7. python unittest 测试笔记(二):使用Requests

    1. Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用.[Python Requests快速入门 :]http://cn.python-requests.org/z ...

  8. Python基础篇--输入与输出

    站长资讯平台:Python基础篇--输入与输出在任何语言中,输入和输出都是代码最基础的开始,so,先来聊一聊输入和输出输出输入END在任何语言中,输入和输出都是代码最基础的开始,so,先来聊一聊输入和 ...

  9. python学习Day3 变量、格式化输出、注释、基本数据类型、运算符

    今天复习内容(7项) 1.语言的分类 -- 机器语言:直接编写0,1指令,直接能被硬件执行 -- 汇编语言:编写助记符(与指令的对应关系),找到对应的指令直接交给硬件执行 -- 高级语言:编写人能识别 ...

随机推荐

  1. C#工具:分词辅助类

    using System; using System.Collections; using System.IO; using System.Text.RegularExpressions; names ...

  2. Spring RestTemplate详解

    Spring RestTemplate详解   1.什么是REST? REST(RepresentationalState Transfer)是Roy Fielding 提出的一个描述互联系统架构风格 ...

  3. Invalid Host header

    这个主要是自己遇到很多次了,每次都去网上查改哪里,这次记到自己这里吧,以后把遇到的vue工具的一些问题都整理到这里 在vue中开发的项目有时候需要到手机上看效果,但是你配好本地端口之后,会出现访问内容 ...

  4. MyDAL - .Where() & .And() & .Or() 使用

    索引: 目录索引 一.API 列表 1.Where .Where(Func<M, bool> func) 如: .Where( it => (it.Prop1>=条件1 &am ...

  5. DataPipeline创始人&CEO 陈诚:沃森与AI

    引言:本文来自infoQ架构师电子月刊对DataPipeline创始人&CEO陈诚的约稿.陈诚,毕业于上海交大,留学于美国密西根大学,前Yelp大数据研发工程师,曾就职于美国Google.Ye ...

  6. sql 排序函数ROW_NUMBER分页返回数据

    分页从数据库返回一张表的某些条数据 假设我需要查询 系统表 sys.all_columns中的数据,每次查询10条 第一次查询第1-10条数据 第二次查询第11-20条数据 第三次查询第21-30条数 ...

  7. Web Storage:浏览器端数据储存机制

    目录 概述 操作方法 存入/读取数据 清除数据 遍历操作 storage事件 参考链接 概述 这个API的作用是,使得网页可以在浏览器端储存数据.它分成两类:sessionStorage和localS ...

  8. jupyter notebook修改默认路径和浏览器

    1.jupyter notebook --generate-config 2.修改jupyter_notebook_config.py配置文件 3.修改默认路径: c.NotebookApp.note ...

  9. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案

    ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不大,但从内部运行方式上来说,差别还是很大的.上一篇详细介绍了原版路由方案的运行机制, ...

  10. iOS 使用Instruments的工具小结

    使用Instruments的工具 iOSXcodeInstrumentsInstruments是一个官方提供的强大的性能调试工具集. 1.Blank(空模板):创建一个空的模板,可以从Library库 ...