包含输入输出的 单元测试 Python unittest

2023-11-12

提交一个小task,需要编写单元测试,百度了一下,多数以基础的函数为主,没有涉及到包含输入输出项的测试,找了好久才找到这个。由于没找到转载项,只好搬过来了,还望原主海谅。

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

注:以下函数fun,为我们所要测试的内容载体,也可以是类或其他。只需要把对应的运行部分写到 单元测试类中 fun()的部分即可。
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()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

包含输入输出的 单元测试 Python unittest 的相关文章

随机推荐

  • Ubuntu 22.04上安装Docker的完整过程

    更新系统软件包 sudo apt update 安装所需的依赖包 以允许APT使用HTTPS sudo apt install apt transport https ca certificates curl software proper
  • Docker构建tomcat无法用startup.sh启动,无法输出catalina.out

    最近部署测试环境 想尝试一下docker 毕竟技术人不能落伍 So 我先学习了一下docker的简单使用 很多东西都是实践出真知 没必要看书找教程 大概看一下能干就可以了 菜鸟教程地址Docker 教程 菜鸟教程 初学者可以了解一下 下面进
  • 编程变量命名的一些技巧

    最近做项目仿真时 在编程的时候发现自己对变量的命名比较混乱 没有统一的规则 故搜集了一些资料对变量命名的技巧和原则有所了解和总结 总的来说 就是英文字母大小写 数字 下划线 按照一定的规则搭配 自己比较喜欢的是帕斯卡 pascal 命名法和
  • stm32f103 TIM2定时器4路PWM输出实验

    这里以TIM2为例 pwm c include pwm h uint16 t TIM2 CCR1 Val uint16 t TIM2 CCR2 Val uint16 t TIM2 CCR3 Val uint16 t TIM2 CCR4 Va
  • 【前端】HTML基础总结

    概要 html基本结构 nbsp 空格 emsp 空字符 html标签 h1 h1 标题标签1 6之间字体大小逐渐减小 p p 段落标签 b b 加粗 strong strong 加粗优化搜索 i i 斜体 div div 块级元素 spa
  • 数据结构学习——栈的应用:迷宫问题

    简介 基于栈的迷宫问题本质上是深度优先遍历 从起点开始深度优先搜索 遇到碰壁的情况时 根据栈的特性 可以 回溯 到之前走过的路 并继续搜索未搜索的方向 具体实现 我使用的ide是qt 它里面的一些图形库有助于我更加直观地理解深度优先搜索的过
  • 华为OD机试真题-评论转换输出-2023年OD统一考试(B卷)

    题目描述 在一个博客网站上 每篇博客都有评论 每一条评论都是一个非空英文字母字符串 评论具有树状结构 除了根评论外 每个评论都有一个父评论 当评论保存时 使用以下格式 首先是评论的内容 然后是回复当前评论的数量 最后是当前评论的所有子评论
  • 服务器显示中国移动,中国移动服务器地址是什么

    中国移动服务器地址是什么 内容精选 换一换 域名的DNS服务器定义了域名用于解析的权威DNS服务器 通过华为云注册成功的域名默认使用华为云DNS进行解析 详细内容 请参见华为云DNS对用户提供域名服务的DNS是什么 若您选择非华为云DNS进
  • 微服务部署:蓝绿部署、滚动部署、灰度部署(金丝雀部署)、功能开关发布

    简介 产品或项目不可能一步到位 一次性推向用户 故而有版本的存在 在app版本更新或者项目迭代的过程中 不可避免需要发布 发布就是部署 部署就是修改 修改则意味着风险 目前有很多用于部署的技术 本文将目前常用的布署方案做一个总结 备注 本文
  • C++指针的注意事项

    1 定义指针时 切勿忘记初始化 2 当指针作为函数参数时 函数体内记得判空 3 动态申请内存时 不要忘记判断内存申请是否成功 4 勿忘释放内存 并且只释放堆内存 即动态申请的内存 5 内存释放后 记得将指针置空 6 函数返回值一定不要是局部
  • 恶意域名解析

    原因 今天在使用搜狗搜索我们公司的网站名称的时候搜索到一个域名为 test99 cn的网站 打开直接弹出了我们的后台管理系统 后果 非法网站被工信部扫描到之后 将会影响到该主机客户的域名备案等信息 另外我们的后台管理系统就这样被暴露了 解决
  • linux内核配置支持ipv6,Linux系统IPv6配置

    1 自动获取IPV6地址 修改 etc sysconfig network文件 加入下列配置文本 NETWORKING IPV6 yes 然后 运行命令service network restart 用命令ifconfig a 查看IPV6
  • 远程RPC+插桩巧解瑞数5,人人都能懂的瑞数(附源码)

    前言 众所周知 rpc对于一些复杂的加密有奇效 我们只需要找到加密函数所在的位置即可通过RPC远程调用 从而省去了扣代码补环境等掉头发过程 本篇以维普期刊为例 一探瑞数的奥秘 1 抓包分析请求接口 通过抓包分析可知 我们要找的url是Sea
  • 学习笔记-Matlab算法篇-差分方程建模

    差分方程建模 01差分方程建模 02蛛网模型 问题提出 在自由竞争的社会中 很多领域会出现循环波动的现象 在经济领域中 可以从自由集市上某种商品的价格变化看到如下现象 在某一时期 商品的上市量大于需求 引起价格下跌 生产者觉得该商品无利可图
  • 诗词-- 收集

    摘自语录 1 所有的优越感 都来自缺乏见识和缺乏悲悯 2 如果一样东西你得到了 却觉得不过如此 那么这个东西其实是你的欲望 如果一样东西你得到了之后 依然爱不释手 那么这这才是你真正想要的 3 不行动的话 你永远都是观众 4 别用自我牺牲
  • Qt扫盲-QStackedWidget理论总结

    QStackedWidget理论总结 1 简述 2 布局用法 3 页面切换 4 常用功能 1 简述 QStackedWidget和QTabWidget的功能类似 都是为解决大量的控件在一个页面上可能显示不出来 同时呢 这些控件也可以按一定方
  • 学习笔记——git从远程仓库拉取代码修改并提交和本地代码提交到远程仓库

    最近开始学习使用git 找了好多博主的文章总结了一下 并非原创 多多指教 一 git从远程仓库拉取代码修改并提交 1 本地新建项目目录 2 从远程仓库拉取代码到本地 git clone git xxx xxx git 注 默认拉取的是mas
  • pytorch自学笔记(旧)

    pytorch自学笔记 数据预处理 心得笔记 代码分析 需要用到的包 如何预处理自己的图片文件 数据预处理 心得笔记 首先要理解一下pytorch中的神经网络的数据格式 通过print打印mnist数据的shape可以知道 输入pytorc
  • docker-stack一键编排lnmp

    环境要求 1 配置nfs存储卷 1 在docker swarm集群中所有节点都确认安装nfs客户端软件 yum install nfs utils rpcbind y 2 在192 168 122 1 上搭建nfs 共享目录给docker
  • 包含输入输出的 单元测试 Python unittest

    提交一个小task 需要编写单元测试 百度了一下 多数以基础的函数为主 没有涉及到包含输入输出项的测试 找了好久才找到这个 由于没找到转载项 只好搬过来了 还望原主海谅 import unittest import io import sy