一、unittest中最核心的四部分是:TestCase,TestSuite,TestRunner,TestFixture
(1)一个TestCase的实例就是一个测试用例。测试用例就是指一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。
(2)而多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。
(3)TestLoader是用来加载TestCase到TestSuite中的。
(4)TextTestRunner是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法
(5)测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。
综上,整个流程就是首先要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,整个过程集成在unittest.main模块中。
二、skip装饰器一共有三个
(1)unittest,skip(reason):无条件跳过
(2)unittest.skipIf(condition, reason):当condition为True时跳过
(3)unittest.skipUnless(condition, reason):当condition为False时跳过
三、总结
(1)verbosity参数可以控制执行结果的输出,0 是简单报告、1 是一般报告、2 是详细报告。
(2)参数中加stream,可以将报告输出到文件:可以用TextTestRunner输出txt报告,以及可以用HTMLTestRunner输出html报告。
(3)每个测试方法均以test开头,否则不能被unittest识别
(4)代码
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestEle))
now = time.strftime('%Y-%m-%d', time.localtime(time.time()))
test_dir = r'E:\code\auto'
filename = test_dir + '/' + now + 'test_result.html'
fp = file(filename,'wb')
runner = HTMLTestRunner(stream=fp, title=u'自动化测试', description= u'测试结果',verbosity=2)
runner.run(suite)