大纲
1 | unittest介绍 |
unittest介绍
unnittest是Python中使用的单测模块,能实现对模块,类,方法的自动调用执行,断言测试,环境管理,结果输出的功能
原理:
unittest构成要素,主要由以下几部分组成:
- testcase:待测对象,待测对象必须要以test,类方法必须含test开头命名;
- TestLoader类:unittest中的类,用来获取模块中的待测对象;返回待测对象的列表;
- TestSuit:测试套件,将测试case加到套件,套件会根据加入的顺序来确认执行顺序;
- 该类的addTest方法,可将测试对象加到套件中,但对结构有要求,必须保持addTest(测试类(具体测试方法)),这种实现方案能保证最先加入套件的最先被执行;
- 该类的另一个方法addTests,也可将测试对象加到套件中,但其对结构也有要求,必须保持addTests([测试类1(测试方法1),测试类1(测试方法2)])
- 这种方法能保证直接将获取的对象加入测试套件,执行顺序按加入套件的顺序,一般是按test的命名顺序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15testloader = unittest.TestLoader()
# 获取测试类里面case名,以固定顺序数组返回
testnames = testloader.loadTestsFromTestCase(t)
print(testnames)
suite = unittest.TestSuite()
suite.addTest/addTests(testnames)
runn = unittest.TextTestRunner(verbosity=2)
runn.run(suite)
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(sui.pa(Test_ap)) #支持加入对象是一个套件,以实现二次封装
runn = unittest.TextTestRunner(verbosity=2)
runn.run(suite)
- TextTestRunner()类:unittest中的类;用来执行suit,控制测试case的执行,执行生成的是text的报告;如果是需要生成htmlt报告,则使用htmltestrunner;
- 执行顺序:默认按case名称顺序来确认执行顺序,也可手动定制顺序,各suit来确定执行顺序;
- 环境/前置/后置处理:使用unittest自带的方法,setUp/setDown,setUpClass setDownClass,其中前两个每个case执行前后都会分别执行前置后置处理;后两个在套件执行前后,分别执行签字和后置处理,且仅执行一次;
- 断言:unittest提供了个钟断言方法,如下图:
- 跳过某些测试case:可以使用unittest的skip装饰器,其中skip装饰器主要有3种;(@unittest.skip(reason)/@unittest.skipIf(condition,reason)/@unittest.skipUnless(condition,reason)/即在满足condition条件下跳过该用例,reason用于描述跳过的原因)