Python语言之异常处理与测试

Posted sowhat1943

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python语言之异常处理与测试相关的知识,希望对你有一定的参考价值。

(一)异常处理

1.捕获所有异常

try:
    x = 5 / 0
except:
    print('程序有错误')

2.捕获特定异常

try:
    x = 5 / 0
except ZeroDivisionError as e:
    print('不能为0',e)
except:
    print('其他错误')
else:
    print('没有错误')
finally:
    print('关闭资源')

3.手动抛出异常

def method():
    raise NotImplementedError('该方法还未被实现')

(二)测试

使用Python自带的unittest模块

example 1:测试某个函数

import unittest
from example import get_formatted_name


class NameTestCase(unittest.TestCase):
    def test_title_name(self):
        formatted_name = get_formatted_name('tom','lee')
        self.assertEqual(formatted_name,'Tom Lee')


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

example 2:测试某个类

class Coder:
    def __init__(self,name):
        self.name = name
        self.skills = []

    def mastering_skill(self,skill):
        self.skills.append(skill)

    def show_skills(self):
        print('掌握技能:')
        for skill in self.skills:
            print('-',skill)
import unittest
from coder import Coder


class CoderTestCase(unittest.TestCase):
    def setUp(self):
        self.c = Coder('Tom')
        self.c.mastering_skill('Python')
        self.c.mastering_skill('Java')
        
    def test_skill_in(self):
        self.assertIn("Python",self.c.skills)
        
    def tearDown(self):
        print('销毁')


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

常用的断言方法:

import unittest

person ={'name':'Tom','age':30}
numbers = [1,23,3,4,4,54]
s = 'hello world python'


class TestAssert(unittest.TestCase):
    def test_assert_method(self):
        self.assertEqual('Tom',person.get('name'))
        self.assertTrue('hello' in s)
        self.assertIn('hello',s)
        #self.assertEqual(3.3,1.1+2.2)
        self.assertAlmostEqual(3.3,1.1+2.2)
        #判断在内存中是否是同一个引用
        self.assertIs(True+1,2)
        self.assertIsNone(None)
        #判断是否是某个类型的实例
        self.assertIsInstance(numbers[0],int)
        #是否大于
        self.assertGreater(5,4)


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

以上是关于Python语言之异常处理与测试的主要内容,如果未能解决你的问题,请参考以下文章

Python自动化测试之异常处理机制实例详解

python之异常处理,断言和反射

python + selenium webdriver 自动化测试 之 环境异常处理 (持续更新)

Python之错误与异常处理

15Python之异常处理

Python基础之函数与异常