异常处理和单元测试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)算法/代码描述(基本要求源代码)

python 复制代码
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)算法/代码描述(基本要求源代码)

python 复制代码
import unittest
class Arithmatic_Operation:
    def add(self):
        return self.x + self.y

    def sub(self):
        return self.x - self.y

    def mul(self):
        return self.x * self.y

    def div(self):
        return self.x / self.y

    def __init__(self, x, y):
        self.x = x
        self.y = y


class 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换成就可以啦;

相关推荐
智算菩萨25 分钟前
【Tkinter】4 Tkinter Entry 输入框控件深度解析:数据验证、密码输入与现代表单设计实战
python·ui·tkinter·数据验证·entry·输入框
七夜zippoe1 小时前
可解释AI:构建可信的机器学习系统——反事实解释与概念激活实战
人工智能·python·机器学习·可解释性·概念激活
YuanDaima20484 小时前
[CrewAI] 第15课|构建一个多代理系统来实现自动化简历定制和面试准备
人工智能·python·面试·agent·crewai
WHS-_-20224 小时前
Python 算法题学习笔记一
python·学习·算法
码界筑梦坊5 小时前
353-基于Python的大湾区气候数据可视化分析系统
开发语言·python·信息可视化·数据分析·django·vue·毕业设计
如何原谅奋力过但无声5 小时前
【chap11-动态规划(上 - 基础题目&背包问题)】用Python3刷《代码随想录》
数据结构·python·算法·动态规划
云姜.5 小时前
JSON Schema使用
python·json
Sunshine for you5 小时前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
qwehjk20085 小时前
如何从Python初学者进阶为专家?
jvm·数据库·python
小熊Coding6 小时前
重庆市旅游景点数据可视化分析系统
爬虫·python·数据挖掘·数据分析·计算机毕业设计·数据可视化分析·旅游景点