一、异常
1、定义
异常是一种特殊的管理对象,用于管理程序运行过程中的错误。前提是知到报错的类型
2、代码结构
1)try-except代码块(最简单,用于提示)
try:
print(5/0)
except ZeroDivisionError:
print("you can't divide it")
2)try-except(pass语句)代码块(pass语句告诉什么也不做,)
def count_words(filename):
try:
with open(filename) as f_obj:
contents = f_obj.read()
except FileNotFoundError():
pass
else:
words = contents.split()
nums = len(words)
3)try-except(pass语句)-else代码块(else在执行try后不满足except报错继续执行)
def count_words(filename):
try:
with open(filename) as f_obj:
contents = f_obj.read()
except FileNotFoundError():
msg = 'sorry,it not exist'
else:
words = contents.split()
nums = len(words)
3、其他
split():将字符串按空格键分开,返回单词列表
二、测试
1、相关概念
1)单元测试:核实函数某个方面没有问题
2)测试用例:一组单元测试,核实函数在各种情况下的行为符合要求
3)全覆盖测试:包含一整套单元测试,涵盖各种可能的函数使用方式
【python标准库模块unittest提供代码测试工具】
2、步骤:导入unittest模块及待测试的函数(类)→创建继承unittest.TestCase的类→编写方法进行测试(含断言方法)→运行测试(unittest.main)
3、断言方法:
assertEqual(a,b)→核实a==b; asserNottEqual(a,b)→核实a!=b
assertTrue(x)→ 核实x为True; assertFalse(x)→核实x为False;
assertIn(item,list)→核实item在list中;assertNotIn(item,list)→核实item不在list中
4、函数测试
import unittest
from name_unction import get_formatted_name
class NamesTestCase(unittest.TestCase):
def test_first_last_name(self):
formatted_name = get_formatted_name('bob','davy')
self.assertEqual(formatted_name,'bob davy')
unittest.main
5、类的测试
setUp()——用于创建一系列实例并设置其属性,在测试方法中直接使用这些实例,减少测试方法中重复创建。
import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
def setUp(self):
question = 'you say what language'
self.my_survey = AnonymousSurvey(question)
self.responses = ['English','Spanish','Mandarn']
def test_store_single_response(self):
self.my_survey.store_response(self.respnse[0])
self.assertIn(self.responses[0],self.my_survey.responses)
def test_store_three_reponses(self):
for response in self.responses:
self.my_survey.store_responses(response)
for response in self.responses:
self.assertIn(response,self.my_survey.responses)
unittest.main