最近学习完unittest框架后,总感觉理解的比较片面,查阅多方资料,总结以下几点,我们一起来学习吧!
1、概念:Unittest是Python标准库的一部分。它是目前最流行的固件测试框架XUnit在Python中的实现。
unittest单元测试框架,是仿junit写出来的,在其他语言中,也有类似的单元测试框架。要深入理解unittest框架,就要先搞明白它下面的几个概念:
test fixture 、 test case、 test suite 、 test runner
2、Unittest框架的单元测试类用例通过继承unittest.TestCase来实现,例如:
import unittest
def fun(x):
return x + 2
class MyTest(unittest.TestCase):
def test(self):
self.assertEqual(fun(2), 4)
3、Unittest框架原理图:
4、Unittest一共包含5个概念:
TestCase: 测试用例类
此类的一个实例,就是一个测试用例。
一个完整的测试用例包括:测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。
TestSuite:测试套件类
对多个测试用例的整合到一起,打包进行测试,就用到了TestSuite,实例化一个TestSuite对象,可以添加上多个测试用例。
TestLoader: 测试用例加载类
加载TestCase实例(即测试用例)到TestSuite实例中,所以,这个类里面有很多加载的方法,例如:几个loadTestFrom__()方法。
TextTestRunner:测试用例运行类
实例化出此类的一个对象,然后把TestSuite实例作为参数传进去,就可以运行测试了。
TextTestResult: 测试用例结果类
TextTestRunner的运行结果保存到TextTestResult中,包括运行了多少测试用例,成功了多少,失败了多少等信息。
小结:
对一个测试用例环境的搭建和销毁,是一个fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现。
关于fixture,还有一个专门的库函数叫做fixtures,功能更加强大。
5、关于Test Fixture
Test Fixture用于测试环境的准备和恢复还原, 一般用到下面几个函数:
setUp()、tearDown()、setUpClass()、tearDownClass()
那么我们对比一下它们之间的区别吧!
首先,setUp()和tearDown(),setUpClass()和tearDownClass()是两组测试用例数据化执行开始和结束;
setUp()和tearDown()是setUp普通方法的前置和后置条件。每运行一次用例,都会执行一次里面的方法,使用时不用加装饰器;
setUpClass()和tearDownClass()是setUpClass()类方法的前置和后置条件。运行用例前只会执行一次里面的方法,使用必须加装饰器。
注意:
setUpClass(cls)和tearDownClass(cls)并不一定要组合使用,它们是同级关系不是上下级关系,可以单独拆分使用。



