unittest模块(单元测试)

单元测试概念:

软件中的最小可测试单元进行检查和验证

unittest四大部分:
Test fixture: 就是运行被测软件所需要的一切东西,这个“东西”不单只是数据,同时还包括对被测软件的准备,例如实例化某个被测方法所在的类,准备数据库的ConnectionString等。通常来说,有三种方法来准备Test Fixture(内联,委托,隐式);

Test case测试用例;

Test suite测试用例(Test case)的集合;

Test runner执行测试用例。

示例:

>>> import unittest

>>> class Test_x(unittest.TestCase):

...     def setUp(self):

...         self.seq=1

...     def test_a(self):

...         return self.seq+1

...     def test_b(self):

...         return self.seq+2

...

>>> if __name__=="__main__":

...     unittest.main()

执行过程:

Test_x继承unittest.TestCase类,setUp是准备测试(Test Fixture);例子中一共有两个testcase,组成了一个testsuite;loader.TestLoader类中有一个loadTestsFromTestCase()方法是加载测试用例(TestLoader);最后通过unittest.main()运行所有测试用例。

testsuite(测试用例集合)生成核心语句:

testCaseNames中的每一个元素,使用testCaseClass为其构造对象,其结果是一个TestCase的对象集合。

loadTestsFromTestCase()方法核心是下面这句:

self.suiteClass(map(testCaseClass, testCaseNames))

 等同于:

    testcases = []

    for name in testCaeNames:  

    testcases.append(TestCase(name))  

    loaded_suite = self.suiteClass(tuple(testcases)) 

setUpClass方法核心:

setUpClass()在一个测试类中在所有test用例开始之前,执行一次且必须使用到Testsuite(只有在TestSuite的run方法里面才对其调用):

如果在执行过程中想改变setUpClass定义变量值,可以把值定义成列表类型等可变类型。

tearDownClass方法:

tearDownClass()在一个测试类中在所有test结束之后,执行一次且必须使用到Testsuite(只有在TestSuite的run方法里面才对其调用)

 

测试过程当中需要对用例进行一些特殊处理,比如标记用例失败忽略@unittest.expectedFailure,跳过执行@unittest.skip

posted @ 2019-07-14 21:44  张特别  阅读(606)  评论(0编辑  收藏  举报