一、Pyhon工作原理—— 核心概念:test case, testsuite, TestLoder,TextTestRunner,TextTestResult, test fixture
TestCase(测试用例): 所有测试用例的基类,它是软件测试中最基本的组成单元。
一个test case就是一个测试用例,是一个完整的测试流程,包括测试前环境的搭建setUp,执行测试代码(run),以及测试后环境的还原(tearDown)。测试用例是一个完整的测试单元,可以对某一问题进行验证。
TestSuite(测试套件):多个测试用例test case集合就是TestSuite,TestSuite可以嵌套TestSuite
TestLoder:是用来加载 TestCase到TestSuite中,其中有几个loadTestsFrom_()方法,就是从各个地方寻找TestCase,创建他们的实例,然后add到TestSuite中,再返回一个TestSuite实例
TextTestRunner:是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。
TextTestResult:测试结果会保存到TextTestResult实例中,包括运行了多少用例,成功与失败多少等信息
TestFixture:又叫测试脚手,测试代码的运行环境,指测试准备前和执行后要做的工作,包括setUp和tearDown方法
二、测试流程:
1. 写好TestCase:一个class继承unittest.TestCase,就是一个测试测试用例,其中有多个以test开头的方法,那么 每一个这样的,在load的时候会生成一个TestCase实例。如果一个class中有四个test开头的方法,最后load到suite中时则有四个测试用例
2. 由TestLoder加载TestCase到TestSuite
3.然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中。
说明:a:通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者可以直接通过TextTestRunner来执行用例
b:Runner执行时,默认将结果输出到控制台,我们可以设置其输出到文件,在文件中查看 结果,也可以通过HTMLTestRunner将结果输出到HTML)
三、unittest实例:
#coding=utf-8
import unittest
class TestCase_01(unittest.TestCase): # 继承unittest.TestCase
@classmethod
def setUpClass(cls):
print('这是所有case的前置条件')
@classmethod
def tearDownClass(cls):
print('这是所有case的后置条件')
def setUp(self):
print('这是每条case的前置条件')
def tearDown(self):
print('这是每条case的后置条件')
def testFirst_01(self):
print('01: 第一条case')
@unittest.skip('不执行这条case') # 跳过这条case
def testSecond_01(self):
print('01: 第二条case')
def testThird_01(self): # 测试用例的命名必须以test开头,否则不予执行
print('01: 第三条case')
if __name__ == '__main__':
# unittest.main() # 使用main()直接运行时,将按case的名称顺序执行
suite = unittest.TestSuite()
suite.addTest(TestCase_01('testFirst_01'))
suite.addTest(TestCase_01('testSecond_01'))
suite.addTest(TestCase_01('testThird_01')) # 将需要执行的case添加到Test Suite中,没有添加的不会被执行
unittest.TextTestRunner().run(suite) # 将根据case添加的先后顺序执行