1、@unittest.skip("skipping this case") # 无条件忽略该测试方法html
2、@unittest.skipIf(a > 5, "condition is not satisfied!") #若是变量a > 5,则忽略该测试方法linux
3、@unittest.skipUnless(sys.platform.startswith("linux"), "requires Linux") # 除非执行测试用例的平台是Linux平台,不然忽略该测试方法 win32是windowswindows
4、测试集框架
一、 unittest自身包括的方法有:less
['FunctionTestCase', 'TestCase', 'TestLoader', 'TestProgram', 'TestResult',
'TestSuite','TextTestRunner', '_CmpToKey', '_TextTestResult', '_WritelnDecorator',
'defaultTestLoader','findTestCases', 'getTestCaseNames', 'main', 'makeSuite']dom
二、 每一个方法的含义函数
'FunctionTestCase':函数测试用例,即给一个函数做为参数,返回一个testcase实例,可选参数有set-up,tear-down方法
'TestCase':全部测试用例的基本类,给一个测试方法的名字,返回一个测试用例实例
'TestLoader':测试用例加载器,其包括多个加载测试用例的方法。返回一个测试套件
loadTestsFromModule(self, module)--根据给定的模块实例来获取测试用例套件
loadTestsFromName(self, name, module=None)
--根据给定的字符串来获取测试用例套件,字符串能够是模块名,测试类名,测试类中的测试方法名,或者一个可调用的是实例对象
这个实例对象返回一个测试用例或一个测试套件
loadTestsFromNames(self, names, module=None) --和上面功能相同,只不过接受的是字符串列表
loadTestsFromTestCase(self, testCaseClass)--根据给定的测试类,获取其中的全部测试方法,并返回一个测试套件
'TestProgram':命令行进行单元测试的调用方法,做用是执行一个测试用例。其实unittest.main()方法执行的就是这个命令,
而这个类实例时默认加载当前执行的做为测试对象,
原型为 __init__(self, module='__main__', defaultTest=None, argv=None, testRunner=xx, testLoader=xx)
其中module='__main__'就是默认加载自身
'TestResult':测试用例的结果保存实例,一般有测试框架调用
'TestSuite':组织测试用例的实例,支持测试用例的添加和删除,最终将传递给testRunner进行测试执行
'TextTestRunner':进行测试用例执行的实例,其中Text的意思是以文本形式显示测试结果。显示测试名称,即完成的测试结果,其过同执行单元测试脚本时添加-v参数
'defaultTestLoader':其实就是TestLoader
'findTestCases', 'getTestCaseNames':这个2个就不用解释了
'main': 其实就是TestProgram
'makeSuite':一般是由单元测试框架调用的,用于生产testsuite对象的实例单元测试
5、单元测试总结测试
至此,咱们知道了。其实整个单元测试框架的逻辑出来了。分三步走:第一步testloader根据传入的参数得到相应的测试用例,即对应具体的测试方法, 而后makesuite在把全部的测试用例组装成testsuite,最后把testsiute传给testrunner进行执行。 而咱们一般执行的unittest.main(),其实就是unittest.testprogram方法,其执行的功能就是上面分析的三步,在第一步中其传入的参数是自身的模块__main__; 在第二步中把自身模块中的全部测试类中中的测试方法提取出来,并生成测试套件;最后再把测试套件传递给testrunner进行具体的测试。 最后给出一个完整的单元测试组织代码,把该代码放到单元测试用例文件的同一个目录后执行该脚本,便可执行全部的测试用例文件。ui
6、测试集参数配置
一、 verbosity
参数能够控制输出的错误报告的详细程度,默认是 1
,若是设为 0
,则不输出每一用例的执行结果,即没有上面的结果中的第1行;若是设为 2
,则输出详细的执行结果
二、 参数中加stream,能够将报告输出到文件:能够用TextTestRunner输出txt报告,以及能够用HTMLTestRunner输出html报告。