异常处理和单元测试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)运行结果(含执行结果验证、输出显示信息

异常处理和单元测试python_第1张图片

异常处理和单元测试python_第2张图片

题目二

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

你可能感兴趣的:(python实验,python)