当前位置: 首页 > news >正文

异常处理和单元测试python

一、实验题目

异常处理和单元测试

二、实验目的

  1. 了解异常的基本概念和常用异常类。
  2. 掌握异常处理的格式、处理方法。
  3. 掌握断言语句的作用和使用方法。
  4. 了解单元测试的基本概念和作用。
  5. 掌握在Python中使用测试模块进行单元测试的方法和步骤。

三、实验内容

  1. 编程实现如下功能:
    1. 定义一个利用列表实现队列的类List_Queue,可以实现队列元素进入、删除、求队列长度等功能。
    2. 定义个异常处理类List_Queue_Exception对类List_Queue中可能出现的异常进行处理。
  2. 编程实现如下功能:
  1. 定义一个实现算术运算的类Arithmetic_Operation,可以实现两个整数的加法、减法、乘法和除法运算。
  2. 定义一个测试类Test_Arithmetic_Operation对Arithmetic_Operation中的功能进行测试。

四、实验步骤

题目一

(1)问题分析(含解决思路、使用的数据结构、程序流程图等

首先:定义两个Class类,一个队列类List_Queue和一个异常处理类List_Queue_Exception;

其次:在队列类里面都定义几个函数,一个是对队列初始化操作list=[],一个用来实现对于队列元素进入append(),一个是对于队列的删除(即出队)pop(),一个是对于队列长度len(),一个是对于队列的输出print();

然后:在主函数中,根据需求做出一个实验的提示,做一个判断循环,如果是输入的的序号是自己想要哒,就做出相应的回应,直接调用函数;

其中:对于异常函数的使用,这个列表是有的时候,才能进行一系列的操作,如果没有这个列表抛出异常;

最后:输出结果。

(2)算法/代码描述(基本要求源代码

class List_Queue:# 初始化def __init__(self):self.list1 = []print('初始化成功!')# 入队def enqueue(self, item):self.list1.append(item)print('添加成功!')# 出队def dequeue(self):if len(self.list1) > 0:print("出队列数据:", self.list1(0))self.list1.pop(0)else:raise List_Queue_Exception()# 返回队列长度def lenqueue(self):return len(self.list1)# 输出队列def l_queue(self):print(self.list1)
class List_Queue_Exception(BaseException):def __init__(self):print("列表为空!")
if __name__ == '__main__':list_queue = List_Queue()print("-----------------")print("*****1:入队*****")print("*****2:出队*****")print("*****3:队列长度*")print("*****4:显示列表*")print("*****0:退出*")print("-----------------")while True:x = int(input("输入序号:"))try:if x in [0, 1, 2, 3, 4]:if x == 0:print("已经退出")break;elif x == 1:y = input("请输入输入的数据:")list_queue.enqueue(y)elif x == 2:list_queue.dequeue()elif x == 3:print("队列长度为:", list_queue.lenqueue())elif x == 4:list_queue.l_queue()else:print("输入有误!")except BaseException as ex:print(ex)

(3)运行结果(含执行结果验证、输出显示信息

题目二

(1)问题分析(含解决思路、使用的数据结构、程序流程图等

首先:定义两个类,一个是算术运算类一个是测试类,算术运算类里面初始化两个数x和y,定义四个函数,一个是整数的加法,一个是整数的减法,一个是整数的乘法和一个除法运算;

其次:定义测试类,定义测试类必须是以test开头,定义两个数,一个是1,一个是6,对于加法来说结果为7,对于减法来说是-5,对于乘法来说是6,对于除法来说是1/6;

然后:执行测试,进行单元测试的常用库的Unittest;

(2)算法/代码描述(基本要求源代码

import unittest
class Arithmatic_Operation:def add(self):return self.x + self.ydef sub(self):return self.x - self.ydef mul(self):return self.x * self.ydef div(self):return self.x / self.ydef __init__(self, x, y):self.x = xself.y = yclass Test_Arithmetic_Operation(unittest.TestCase):def setUp(self):self.op = Arithmatic_Operation(1, 6)def test_add(self):if self.assertEqual(self.op.add(), 7):print("正确")def test_sub(self):self.assertEqual(self.op.sub(), -5)def test_mul(self):self.assertEqual(self.op.mul(), 6)def test_div(self):self.assertEqual(self.op.div(), 1 / 6)if __name__ == '__main__':unittest.main()

(3)运行结果(含执行结果验证、输出显示信息

五、出现的问题及解决的方法

出现的问题

(1)在第一个实验时,出现'list' object is not callable错误;

(2)出现这个0.16666666666666666 != 0.167;

解决的办法

(1)找到对应的list的地方换成list1;

(2)这块必须是等于1/6换成就可以啦;

http://www.lryc.cn/news/265943.html

相关文章:

  • 蓝牙物联网在汽车领域的应用
  • 用23种设计模式打造一个cocos creator的游戏框架----(二十二)原型模式
  • paddle 55 使用Paddle Inference部署嵌入nms的PPYoloe模型(端到端fps达到52.63)
  • 自动化测试工具-Selenium:WebDriver的API/方法使用全解
  • 如何通过蓝牙串口启动智能物联网?
  • Linux---基础操作命令
  • uniapp怎么动态渲染导航栏的title?
  • 【机器学习】决策树
  • [node] Node.js的全局对象Global
  • 完整的 Meteor NPM 集成
  • 智能优化算法应用:基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 解决 MATLAB 遗传算法中 exitflg=4 的问题
  • 云卷云舒:云原生业务应用成熟度模型
  • STM32的以太网外设+PHY(LAN8720)使用详解(5):MAC及DMA配置
  • GitHub、Gitee、Gitlab共用一个SSH密钥配置
  • ClickHouse(19)ClickHouse集成Hive表引擎详细解析
  • 用C求斐波那契数列-----(C每日一编程)
  • 在Jetpack Compose中使用ExoPlayer实现直播流和音频均衡器
  • 持续集成交付CICD:Jira 远程触发 Jenkins 实现更新 GitLab 分支
  • 基于SSM的面向TCP_IP的网络互联实验平台
  • 【IDEA】try-catch自动生成中修改catch的内容
  • 2024 十大AI预测
  • 【Linux基础开发工具】gcc/g++使用make/Makefile
  • Windows Nginx版本升级
  • kubernetes集群 应用实践 kafka部署
  • Featured Based知识蒸馏及代码(3): Focal and Global Knowledge (FGD)
  • CentOs 安装MySQL
  • 基于Java (spring-boot)的在线考试管理系统
  • 5. 结构型模式 - 外观模式
  • 微服务之配置中心与服务跟踪