介绍
作为单元测试的框架, unittest 也是可以对程序最小模块的一种敏捷化的测试;利用单元测试框架,创建一个类,该类继承unittest的TestCase,这样可以把每个case看成是一个最小的单元, 由测试容器组织起来,到时候直接执行,同时引入测试报告。
一、UnitTest是什么?
unittest是Python单元测试框架,也是python的自动测试包
二、UnitTest的核心要素
1、TestCase:一个TestCase方法是一个测试用例,测试用例必须继承unittest.TestCase
(1)导包:import unittest
(2)class 类名(unittest.TestCase):
def setUp(): 负责测试环境的搭建,一般包含实例化webdriver,最大化、隐式等待、打开url等
def tearDown():负责测试环境的销毁,一般包含退出登录、退出浏览器等
def test_xxx():
(3)注意:
① 测试用例中方法名必须以test开头,否则不会被执行
② 写main方法
③ 光标放在代码后面的空白行或者mian()方法的位置执行
④ 如果把光标放在某一个方法名后面执行,只能执行当前一个方法
⑤ 多个方法,按照方法名ASCII的顺序执行
2、Test suite:测试套件
(1)把多个测试用例集合到一起就构成了测试套件
(2)测试套件无法直接运行
3、Test runner:测试执行
(1)用来执行测试套件
4、TestLoader:用于创建类和模块的测试套件
(1)一般的情况下,使TestLoader().loadTestsFromTestCase(TestClass)来加载测试类
5、Test fixture:概述
(1)负责测试环境的搭建(初始化)和销毁(清除)
(2)在继承了unittest.TestCase的前提下,Fixture = setUp() + tearDown()
(3) setUp():负责测试环境的搭建,一般包含实例化webdriver,最大化、隐式等待、打开url等
(4)tearDown():负责测试环境的销毁,一般包含推出登录、推出浏览器等
(5)每一个test_xxx()方法被执行之前都会先执行setUp(),然后在执行test_xxx()方法,最后执行tearDown()方法
三、测试套件与测试执行
(1)生成测试套件
① 实例化TestSuite一个空的测试套件,给套件添加测试用例(方法)
② addTest(类名(方法名)):添加指定类中的指定方法
③ addTest(unittest.makeSuite(类名)):添加指定类中所有以test开头的方法
(2)执行测试套件
① 实例化TextTestRunner,然后调用run()执行测试套件
(3)defaultTestLoader
① 生成测试套件的,可以认为是TestSuite的一种特殊的实现方式
② defaultTestLoader有个方法discover()能够在执行目录搜索指定开头的.py文件,并把所有测试类中test开头的方法添加到测试套件中
一般,会把套件.py文件和用例放在同一个目录,否则可能导致截图失败
四、断言
(1)概念:由程序代替认为自动判断实际结果是否符合预期结果的过程
(2)断言的分类
① 比较断言
② 基本布尔型断言
③ 复杂断言
(3)断言的方法
① assertEqual(arg1, arg2),判断arg1 == agr2
② assertIn(str1, str2), 判断str1是否为str2的字串
(4)断言拓展
① 断言失败后续的代码不会被执行---->异常处理
(2)异常处理的格式
try:
可能出现异常的代码
except 异常类型:
捕获到该异常时执行的代码
raise抛出异常,让程序报错
else:
没有异常时执行的代码
finally:
有没有异常,都会执行的代码