Python练习之第九天--异常--单元测试

文章目录

  • 第一题
  • 第二题
  • 第三题

第一题

Python练习之第九天--异常--单元测试_第1张图片

import  os
def func1(filename):
    try:
   

 fil=open(filename,encoding='utf8')
    except Exception as err:
        print(err)
    else:
        print(fil.read())
        fil.close()
func1('diwutian.txt')#会乱码,因为文件读取默认是以gbk编码,指定以utf8给我读就不会有乱码了。

测试结果:

123
abc
油品课堂

乱码结果:

import  os
def func1(filename):
    try:
        fil=open(filename)
    except Exception as err:
        print(err)
    else:
        print(fil.read())
        fil.close()
func1('diwutian.txt')#会乱码,因为文件读取默认是以gbk编码,文件读取时,指定以utf8给我读就不会有乱码了。
 
123
abc
娌瑰搧璇惧爞
#定义自己的异常类,一般要继承Exception和Baseexception这两个类
class my_error(Exception):
    def __init__(self,str):
        self.leng=len(str)
    def process(self):
        if self.leng<5:
            return  'The input is of length %s,expecting at least 5' %self.leng
        else:
            return  'print success'
try:
    raise my_error('sssss')##这句话意思是:我主动抛出了自己定义的异常类,
    # 而'ssss'只是占位符,即相当于要传参数进去给str,即此时即self.leng=len('sssss')
except my_error as e:#这个意思是我抛出了一个异常,但我又捕获到了这个异常,并将这个异常类的实例即为e
    #所以e.process()就可以执行方法了。
    print(e.process())raise ValueError('value  is not between 0 and 100')#这种主动抛出的异常是Python内置的异常,不是自定义的,即意思是:
    #只要抛出ValueError,这个内置异常,就打印后边字符串,即'value  is not between 0 and 100',这个字符串不是占位符。即与自己定义异常类后边的my_error('sssss')还是有区别的。
def func2(listinfo):
    try:
        res=filter(lambda k: k<100 and k%2==0,listinfo)#将列表中小于100的偶数过滤出来返回给res
    except Exception as err:
        return  err
    else:
        return  list(res)

listinfo=[133,88,33,22,44,11,44,55,33,22,11,11,444,66,555]
assert type(func2(listinfo))==list ##assert  ==    用来判断相等的。即相当于测试单元模块中的assertEqualassert func2(listinfo)==[88,22,44,44,22,66]
assert func2(listinfo) == [88, 22, 44, 44, 22]
#记住这种断言只要运行不报错就说明正确了,不要多次一举非得打印一下true正确。是没有的,打印还会报错。

第二题

Python练习之第九天--异常--单元测试_第2张图片

解答:

def jianfa(a,b):
    if  a<b:
        raise BaseException('被减数不能小于减数')
    else:
        return  a-b


#print(jianfa(1,3))
print(jianfa(3,1))

测试结果:

   raise BaseException('被减数不能小于减数')
BaseException: 被减数不能小于减数

第三题

Python练习之第九天--异常--单元测试_第3张图片
解答:

with self.assertRaises(ValueError):s1.get_grade()  #即当函数get_grade()返回异常ValueError时,此时就满足条件,即断言通过,即此时即单元测试函数Ok了。只要不抛出ValueError这个异常就测试结果就不会ok了。

你可能感兴趣的:(python练习题)