一,@unittest.skip("skipping this case") # 无条件忽略该测试方法
二,@unittest.skipIf(a> 5, "condition is not satisfied!") #如果变量 a> 5, 则忽略该测试方法
三,@unittest.skipUnless(sys.platform.startswith("linux"), "requires Linux") # 除非执行测试用例的平台是 Linux 平台, 否则忽略该测试方法 win32 是 windows
四, 测试集
1, unittest 自身包括的方法有:
- ['FunctionTestCase', 'TestCase', 'TestLoader', 'TestProgram', 'TestResult',
- 'TestSuite','TextTestRunner', '_CmpToKey', '_TextTestResult', '_WritelnDecorator',
- 'defaultTestLoader','findTestCases', 'getTestCaseNames', 'main', 'makeSuite']
2, 每个方法的含义
'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 对象的实例
五, 单元测试总结
至此, 我们知道了. 其实整个单元测试框架的逻辑出来了. 分三步走: 第一步 testloader 根据传入的参数获得相应的测试用例, 即对应具体的测试方法, 然后 makesuite 在把所有的测试用例组装成 testsuite, 最后把 testsiute 传给 testrunner 进行执行. 而我们通常执行的 unittest.main(), 其实就是 unittest.testprogram 方法, 其执行的功能就是上面分析的三步, 在第一步中其传入的参数是自身的模块__main__; 在第二步中把自身模块中的所有测试类中中的测试方法提取出来, 并生成测试套件; 最后再把测试套件传递给 testrunner 进行具体的测试. 最后给出一个完整的单元测试组织代码, 把该代码放到单元测试用例文件的同一个目录后执行该脚本, 即可执行所有的测试用例文件.
六, 测试集参数配置
1, verbosity 参数可以控制输出的错误报告的详细程度, 默认是 1, 如果设为 0, 则不输出每一用例的执行结果, 即没有上面的结果中的第 1 行; 如果设为 2, 则输出详细的执行结果
2, 参数中加 stream, 可以将报告输出到文件: 可以用 TextTestRunner 输出 txt 报告, 以及可以用 htmlTestRunner 输出 html 报告.
来源: http://www.bubuko.com/infodetail-2621925.html