异常&测试(chapter_10&chapter_11)

一、异常
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值