Python 异常处理与单元测试

一.异常处理
1.try:except:用法

try:
    print(p.age) #需要测试是否异常的对象
except:
    print('遇到属性异常')

try:
    print(p.age) #需要测试是否异常的对象
except AttributeError as e:  # e实例化对象 ,捕获异常
    print('遇到属性异常', e)
    print(type(e))

2.try…except…else…:

try:
    print(p.name)
except:
    print('遇到属性异常')
else:
    print('没有异常')

3.try…finally…
不论异常是否发生,程序结束前,finally中的语句都会被执行。

try:
    print(p.age)
except:
    print('遇到属性异常')
else:
    print('没有异常')

finally:
    print(p.name) # 执行输出Perter

4.手动触发异常:

def method():
    raise NotImplementedError('代码还没实现')  # 手动抛出异常


method()

5.常见的异常类型:
https://blog.csdn.net/wyl1987527/article/details/78290500

二.单元测试(unittest)

def get_named(first, secon):
    a = '{} {}'.format(first, secon)
    return a.title() 
#print(get_named('tom', 'lee')) #输出Tom Lee

import unittest #导入测试模块
from Exceptions_and_tests.basic1.test2 import get_named


class NameTestCase(unittest.TestCase):  # 继承基类
    def test_title_name(self):
        formatted_name = get_named('tom', 'lee')
        self.assertEqual(formatted_name, 'Tom Lee')  # 断言:判断是否相等


NameTestCase().test_title_name()  # 运行测试方法
class Coder:
    def __init__(self, name):
        self.name = name
        self.skills = []

    def mastering_skills(self, skills):
        self.skills.append(skills)

    def showing_skills(self):
        print('掌握技能:')
        for skill in self.skills:
            print('-', skill)


c = Coder('Tom')
c.mastering_skills('Python')
c.mastering_skills('C++')
c.showing_skills()
#输出:
#掌握技能:
#- Python
#- C++

###测试:
import unittest
from Exceptions_and_tests.basic1.test4 import Coder


class CoderTestCase(unittest.TestCase):
    def test_skill_in(self):
        c = Coder('Tom')
        c.mastering_skills('Python')
        c.mastering_skills('ASP')

        self.assertIn('Python', c.skills)


# CoderTestCase().test_skill_in()  # 功能等同下面

if __name__ == '__main__':
     unittest.main()

三.断言方法

assertEqual(值,表达式) #是否相等
assertTrue() #是否为真
assertIn() #是否包含
assertAlmostEqual(值,表达式) #是否约等于(3.3 约等于1.1+2.2)浮点数溢出
assertIs() #是否同引用
assertNone() #是否为空

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值