python的unittest框架理论基础

Unittest核心工作原理

最核心的四个概念:test case ,test suite,test runner,test fixture

一个TestCase实例就是一个测试用例

测试用例:指一个完成的测试流程,包括测试前环境搭建(setup),执行测试代码(run),测试后环境还原(tearDown)。

一个测试用例是一个完整的测试单元,执行这个单元,验证某个问题

多个测试用例集合在一起就是TestSuite,并且TestSuite可以嵌套TestSuite

TestLoader用来加载TestCase到TestSuite中,loadTestsFrom_()方法,是从各个地方查找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例

TextTestRunner用来执行测试用例,其中run(test)会执行TestSuite/TestCase中的run(result)方法。测试结果保存到TextTestResult实例中,包括运行了多少测试用例,成功和失败各有多少等信息

对一个测试用例环境的搭建和销毁是一个fixture

一个class继承了unittest.TestCase,就是一个测试用例,如果有很多以test开头的方法,每个方法在load的时候便会生成一个TestCase实例,如:一个class中有四个test_xxx方法,最后在load到suite中也会有四个测试用例

整个流程如下:

写好TestCase,然后由Testloader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中

通过命令或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者直接通过TextTestRunner来执行用例

说明:在runner执行时,默认将结果输出到控制台,可以设置输出到文件中,然后在文件中查看;另外HTMLTestRunner也同样是执行用的,它可以将结果输出到html中,它跟TextTestRunner是一样的,但是它生成的报告更清晰好看


注意:1.运行时不要把文件放在中文目录下 2.编码缩进格式要注意否则会有错误,该缩进的要缩进,该顶格的要顶格写



关键字解释

TestLoader:测试用例加载器其包括多个加载测试用例的方法。返回一个测试套件

loadTestsFromModule(self,module)--根据给定的模块实例来获取测试用例套件

loadTestsFromTestCase(self,testCaseClass)--根据给定的测试类获取其中的所有测试方法并返回一个测试套件

loadTestsFromName(self,name,module=None)

--根据给定的字符串来获取测试用例套件字符串可以是模块名测试类名测试类中的测试方法名或者一个可调用的是实例对象

这个实例对象返回一个测试用例或一个测试套件

loadTestsFromNames(self,names,module=None) --和上面功能相同,只不过接受的是字符串列表

setUp()和tearDown()两个方法(其实是重写了TestCase的这两个方法),这两个方法在每个测试方法执行前以及执行后执行一次,setUp用来为测试准备环境,tearDown用来清理环境,已备之后的测试。

setUpClass()与tearDownClass():如果想要在所有case执行之前准备一次环境,并在所有case执行结束之后再清理环境,我们可以用setUpClass()与tearDownClass():

关键字的关系图


python的unittest框架理论基础_第1张图片

总结如下:

1.unittest是Python自带的单元测试框架,我们可以用其来作为我们自动化测试框架的用例组织执行框架

2.unittest的流程:写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,我们通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者我们可以直接通过TextTestRunner来执行用例。

3.一个class继承unittest.TestCase即是一个TestCase,其中以test开头的方法在load时被加载为一个真正的TestCase。

4.verbosity参数可以控制执行结果的输出,0是简单报告、1是一般报告、2是详细报告。

5.可以通过addTest和addTests向suite中添加case或suite,可以用TestLoader的loadTestsFrom__()方法。

6.用setUp()、tearDown()、setUpClass()以及tearDownClass()可以在用例执行前布置环境,以及在用例执行后清理环境

7.我们可以通过skip,skipIf,skipUnless装饰器跳过某个case,或者用TestCase.skipTest方法。

8.参数中加stream,可以将报告输出到文件:可以用TextTestRunner输出txt报告,以及可以用HTMLTestRunner输出html报告。



python的unittest框架理论基础_第2张图片
python的unittest框架理论基础_第3张图片

你可能感兴趣的:(python的unittest框架理论基础)