一.异常处理
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() #是否为空