实验三,基于Unittest框架的单元测试
实验三,基于Unittest框架的单元测试
一,实验目的
(1) 掌握单元测试技术,并按单元测试的要求设计测试用例。
(2) 能熟练应用功能性测试技术进行测试用例设计;
(3) 能熟练应用结构性测试技术进行测试用例设计;
(4) 对测试用例进行优化设计;
二, 实验环境
主流PC机一套,要求安装windows操作系统、PyCharm开发工具和OFFICE工具;
三,实验内容:
接受三个正整数a、b、c作为输入,用做三角形的边。三边必须满足条件: 0<a、b、c≤200;程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、普通三角形或不构成三角形。
参考程序:
#inclide<stdio.h>main( ){ int a,b,c;scanf(″%d,%d,%d″,&a,&b,&c);if(a<0||a>200||b<0||b>300||c<0||c>200)printf(″数据输入有错,不满足0<a、b、c≤200″); else if(a+b<=c||b+c<=a||a+c<=b)printf(″不构成三角形″); else if(a==b && b==c)printf(″等边三角形″);else if(a==b ||b==c||c==a)printf(″等腰三角形″); else printf(″普通三角形″); }
(1)利用Python语言改成测试程序
#-*- codeing = utf-8 -*-
#@Time : 2021/6/24 14:18
#@Author : 我是nefu小白
#@File : trangle.py
#@Software : PyCharm
def trangle():a = float(input("请输入三角形第一条边的长度:"))b = float(input("请输入三角形第一条边的长度:"))c = float(input("请输入三角形第一条边的长度:"))if ((a < 0 or a > 200 ) and (b < 0 or b > 200) and (c < 0 or c > 200)):print("输入数据有错,不满足 0 < a, b, c < 200")else:if (a + b <= c or b + c <= a or a + c <= b):print("不能构成三角形")elif (a == b == c):print("等边三角形")elif (a == b or b == c or a == c):print("等腰三角形")else:print("普通三角形")
if __name__ == '__main__':trangle()
(2)利用等价类划分的方法,给出足够的测试用例。
① 如果不满足后面三个条件中的任意一个,则程序输出“非三角形”;
② 如果3条边相等,则程序输出“等边三角形”;
③ 如果有且仅有两条边相等,则程序输出“等腰三角形”;
④ 如果3条边都不相等,则程序输出为“一般三角形”。
显然这四种情况是相互排斥的。
三角形问题包含了清晰而有复杂的逻辑关系,因此经常在软件测试的问题分析中被用到。
仔细分析三角形问题,我们可以得到一个等价类表如下图,然后根据这个表格来设计覆盖上述等价类的测试用例。
覆盖无效类的测试用例
(3)利用Unittest框架编写测试程序,执行这些测试用例。
Unittest测试程序:
#-*- codeing = utf-8 -*-
#@Time : 2021/6/24 14:58
#@Author : 我是nefu小白
#@File : trangleTest.py
#@Software : PyCharm
import unittest
import trangle;
class trangleTest(unittest.TestCase):def setUp(self):"""在这里做资源初始化"""passdef tearDown(self):"""在这里做资源的释放"""passdef test_trangle1(self):trangle.trangle(1.5, 4, 5)def test_trangle2(self):trangle.trangle(3.5, 2.5, 5)def test_trangle3(self):trangle.trangle(2.5, 4.5, 5.5)def test_trangle4(self):trangle.trangle(3, 3, 3)def test_trangle5(self):trangle.trangle(200, 104, 105)def test_trangle6(self):trangle.trangle(3, 3, 3)def test_trangle7(self):trangle.trangle(4, 5, 2)def test_trangle8(self):trangle.trangle(3, 0, 8)def test_trangle9(self):trangle.trangle(0, 6, 0)def test_trangle10(self):trangle.trangle(0, 0, 0)def test_trangle11(self):trangle.trangle(-3, 4, 6)def test_trangle12(self):trangle.trangle(2, -7, -5)def test_trangle13(self):trangle.trangle(-3, -4, -5)def test_trangle14(self):trangle.trangle(101, 4, 5)def test_trangle15(self):trangle.trangle(3, 101, 102)def test_trangle16(self):trangle.trangle(101, 104, 105)if __name__ == '__main__':unittest.main()
执行测试用例结果:
四,实验结果与分析
本次实验没有遇到任何麻烦的问题,一些小问题均是搜索百度,B站,和各种blog解决。
感想:
之前,我一直不知道写单元测试测有什么用,因为单元测试只是把写好的程序运行了一遍,并没有创建新的逻辑,我心里在疑惑“我已经将程序按照我的想法写好了,它就会按照我的设计来运行,为什么要用单测重新走一遍呢?”,后来出了一个事情,代码出了BUG,我调试了好久,才发现问题出在”obja.equals(objb)”,因为obja和objb一个是Long一个是Integer,所以即使数值相同,也不会相等。
从那一刻,我发现单元测试做的事情,其实就是“验证程序是否按照我的想法在运行”,这才是它的终极目的,但是,这却是很关键的事情,设计往往没有错,但是写出来的代码却经常并不是按照我们所想的去运行的。
单元测试,就是验证代码是不是按照我们想象的在运行,这也是单测这个技术的意义所在。
文档下载链接:单元测试实验报告
实验三,基于Unittest框架的单元测试相关推荐
- 实验三 基于FPGA的数码管动态扫描电路设计 quartus/数码管/电路模块设计
实验三 基于FPGA的数码管动态扫描电路设计 源文件的链接放在最后啦 实验目的: (1) 熟悉7段数码管显示译码电路的设计. (2) 掌握数码管显示原理及静态.动态扫描电路的设计. 实验任务: (1) ...
- 使用unittest框架做单元测试------基础版本
总结:使用unittest做单元测试的步骤 1.导入unittest模块,为了使用unittest框架 2.导入被测试对象,例如一个函数,一个类 3.创建一个测试类.并继承unittest.TestC ...
- 实验三 基于GUI的文件管理器——Java实现
一.实验目的 运用面向对象程序设计思想,基于Java文件管理和I/O框架,实现基于图形界面的GUI文件管理器. 二.实验项目内容 1.实现文件夹创建.删除.进入. 2.实现当前文件夹下的内容罗列. 3 ...
- 实验三 基于A*算法的迷宫游戏
软件实习项目三 -- Java实现基于A*算法的迷宫游戏 一.实验任务 (1)该题要求随机生成一个迷宫,并求解迷宫: (2)要求游戏支持玩家走迷宫,和系统走迷宫路径两种模式.玩家走迷宫,通过键盘方向键 ...
- 实验三 基于A*迷宫的算法
一 实验要求 1.迷宫随机生成 2.玩家走迷宫,留下足迹: 3.系统用A*算法寻路,输出路径 解决问题 1.如何显示迷宫的图形界面: 2.如何生成随机的迷宫: 3.怎样移动游戏中走迷宫的"玩 ...
- Selenium Web自动化测试——基于unittest框架的PO设计模式
引言 前面一直在讲接口自动化测试框架与案例分享,很少讲Selenium这个Web自动化测试神器.它主要用来做UI自动化测试,大家都知道UI自动化测试成本相当高,一般的Web自动化测试我是一直不建议做的 ...
- 无线定位技术实验三 基于信号强度的位置指纹定位仿真
前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看.(点击跳转人工智能学习资料) 微信公众号:创享日记 发送:指纹定位 获取完整报告(含源码+结果+思考 ...
- 实验三 基于A*算法的迷宫游戏开发
实验要求: 1.迷宫随机生成 2.玩家走迷宫,留下足迹: 3.系统用A*算法寻路,输出路径 解决问题: 1.如何显示迷宫的图形界面: 2.如何生成随机的迷宫: 3.怎样移动游戏中走迷宫的"玩 ...
- 【计算机网络综合实验】基于eNSP的计算机网络实验(完结篇)
基于eNSP的计算机网络实验-----完结篇 一.路由器基本配置和静态路由 1.背景知识 2.ENSP模拟过程 3.实际网络设备操作 二.路由器动态配置(RIP.OSPF协议) [有时间再细细回想来写 ...
最新文章
- 科技基建,自主创芯——详解全球半导体制造行业格局
- Bzoj3730 震波
- Windows Server 2003 Clustering 服务
- jQuery的Tooltip插件
- html右侧分为两个框架,html – 两个框架一个滚动条
- java double add,Java中的DoubleStream.Builder add()方法
- python数据结构之集合(set)——超详细
- python抓取抖音用户画像,摩羯天蝎居然刷得最多?
- 习题4-6 莫尔斯代码(Morse Mismatches,ACM/ICPC World Finals 1997,UVa508)
- chmod 755 filename
- JS中的this是什么,this的四种用法
- Java游戏吉他英雄_《吉他英雄》全系列十作美版下载
- 【笔记】MyBatis 大于等于小于等于常用写法
- 搭讪培训班 - 名品试用 - YOKA时尚论坛 - YOKA社区
- 读书笔记软件调试之道 :从大局看调试-零容忍策略
- (转)反汇编算法介绍和应用——线性扫描算法分析
- iOS开发 给view绘制虚线边框
- 电子科技大学图论期末复习重点(杨春老师强调+往年期末卷子总结)
- 2022年下半年网络规划设计师下午真题及答案解析
- R语言logistic回归交互项(交互作用)的可视化分析
热门文章
- pymysql无法访问本地计算机,使用Python和odo模块在mysql上加载csv时出错
- 以太网rxp rxn txp txn
- 微信小程序纯前端生成海报并保存本地
- 30分钟学会js新特性
- oracle提示错误1033,ora-1033 制造问题和解决问题
- 不动点迭代 开平方 Excel演示
- 【JAVA百炼成仙】特别篇——(三个IO练习题)
- PHP多进程 - opcode缓存与用户缓存(APC, XCache, eAcclerator,Zend Opcache,Yac)
- 软件测试工作的感想怎么写,软件测试工作中的一些感悟
- Kafka ui 搭建以及使用