程序越复杂,出现异常的概率越大,如何在程序崩溃之前,捕捉异常,预判异常?项目越大,需要测试的内容越多,如何快速有效地测试?
1、异常处理
# 异常处理,以try开始,try里面的内容,是可能发生的错误try: weigt = float(input(输入体重:))# 如果输入的值不符合要求,将会抛出valueerror异常except valueerror: print(请输入数值)# 如果除数为0,将会抛出zerodivisionerror异常except zerodivisionerror: print(除数不能为0)# 异常类型非常多,列出所有异常不太现实# 对于那些没有明确列出的异常,可以用except对其捕捉except: print(捕捉所有为止错误)# 当try里面的语句没有执行时,也就是没有异常的时候,执行elseelse: print(没有异常做点什么)# 无论错误是否发生,都会被执行finally: print(不管怎么样,还是要做点什么刷下存在感)需要注意的是:
异常处理从上向下执行,如果匹配到了某种异常,后面的异常处理将不会继续执行,例如抛出了valueerror异常,zerodivisionerror异常和except异常都不会执行如果没有捕捉到具体的异常种类,except异常将会执行,但不会给出具体的异常提示。所以,异常种类越详细,抛出异常信息越详细。仅在没有异常抛出的情况下,才会执行else,如果抛出了异常,将不会执行不管是否抛出异常,最后finally都会被执行2、单元测试
建立被测试文件shopping.py
class shopping: def __init__(self, price, number): self.price = price self.number = number def totalprice(self): return self.price * self.number def productquantity(self): return self.number建立测试文件test_shopping.py
# 加入库import unittest# 加入需要测试的类# 如果测试文件与被测试文件在同一目录,用文件名+类名from shopping import shopping# 新建一个类,继承unittest库中的testcase类class testshopping(unittest.testcase): # 当进行单元测试的时候,首先会执行setup方法 def setup(self): # 实例化对象 self.shoplist = shopping(4, 3) # 测试totalprice方法,必须以test_开头 def test_totalprice(self): # assertequal判断是否相等 self.assertequal(self.shoplist.totalprice(), 12) def test_productquantity(self): self.assertequal(self.shoplist.productquantity(), 4)断言的种类还有很多,这里只列举了一种断言:assertequal
如果测试通过
如果测试不通过
还可以在python终端,执行命令,对项目中所有文件进行单元测试
python -m unittest
案例代码没有给出非常详细的解释,刨除了很多语法细节,可以作为一个快速掌握python异常处理和单元测试的笔记查阅。
NVIDIA Clara Guardian的功能特性
西奈山伊坎医学院的研究人员开发了一种AI平台
芯盛智能斩获“十大固态硬盘企业金奖”荣誉称号
物通博联SaaS云服务实现设备无缝对接MES系统
如何备份超融合基础设施?
Python异常处理和单元测试简介
光通信设备的激光收发模块利于维护国内供应链的稳定与安全?
最难被ai取代的职业
PCB多层板压合制程
国内多个城市启动5G体验活动,5G手机用户感受5G新体验
土壤肥料养分速测仪的用途有哪些,它有哪些优势
单片机解密失败的原因
恒大法拉第未来中国总部正式落地,规划明年一季度正式量产FF91
Spring Boot时配置JSON序列化选项的几种方法
虚拟仪器与虚拟试验技术简介
E-Band微波通信系统的应用及发展趋势
恩智浦重组领导团队 新任总裁Kurt Sievers将全面负责公司业务
威旺M204米5车长,3.68万起,还搭配1.5L 116马力的发动机
医鸣数据获近亿融资:全心投入医疗研发,专注医疗高科技
硕橙科技宣布完成数千万元人民币B轮融资