unittest 是python 语言的单元测试框架,提供了创建测试用例、测试套件和批量执行测试用例的方案。
利用单元测试框架,可以创建一个类,该类继承 unttest 的 TestCase ,这样可以把每个 TestCase 看成是一个最小的单位,由测试套件组织起来,运行时直接执行即可,同时可以引入测试报告。
一、测试固件
测试固件用于处理初始化操作,可以使测试固件只执行一次。
1、测试固件每次均执行
unittest 单元测试框架中,提供了setUp 和 tesrDown 的测试固件。
执行顺序是先执行 setUp 方法,再执行 test_baidu_so 或者 test_baidu_hi 其中一个,最后执行 tearDown 方法。有N个用例,setUp 方法、tearDown 方法 都会执行N次。
2、测试固件只执行一次
使用 setUpClass 和 tearDownClass 方法。
有N个用例,setUpClass 和 tearDownClass 方法 只会执行1次。
但有一个问题,如:以百度首页测试点击新闻页面和测试点击地图页面为例,意味着点击新闻页面后,需要回到百度首页后才可以找得到地图页面的链接进行点击。
所以,在实际的工作中,尽量使用测试固件 setUp 和 tearDown ,使得自动化测试用例之间没有关联性,避免一个测试用例执行失败是由于上一个测试用例导致的。
二、测试执行
测试用例的执行是在主函数中,unittest 调用的是 main,代码如下:
1 |
|
TestProgram 还是一个类,该类的构造函数如下代码:
在 unittest 模块中包含的 main 方法,可以方便地将测试模块变为可以运行的测试脚本。main 使用 unittest.TestLoader 类来自动查找和加载模块内的测试用例,TestProgram 类中该部分的代码如下:
在执行测试用例时,在 mian 方法中加入了 verbosity=2,代码如下:
1 |
|
verbosity 中默认是 1 ,0 代表执行的测试总数和全局结果,2 代表显示详细的信息。
verbosity=2 时,成功的测试用例会显示 OK,失败的测试用例会显示出详细的信息。
如果想单独地执行某一测试,用鼠标右键点击要执行的测试用例名称,选择“Run”。
三、构建测试套件
一个测试类中会有很多个测试用例,unittest 提供了“测试套件”方法,它由 unittest 模块中的 TestSuite 类表示,测试套件可以根据所测试的特性把测试用例组合在一起。
1、按顺序执行
TestSuite 类中提供了 addTest 方法可以实现测试用例按顺序执行,要执行的测试用例按自己期望执行顺序添加到测试套件中。