Python单元测试框架——unittest

   日期:2024-01-17     浏览:46    评论:0    

一、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实例:

  1.准备待测方法:

    

  2. 为以上方法写测试:

  

  执行结果:

  

 

  这就是一个简单的测试,有几点需要说明的:

       a:在第一行给出了每一个用例执行的结果的标识,成功是 .,失败是 F,出错是 E,跳过是 S。从上面也可以看出,测试的执行跟方法的顺序没有关系,test_divide写在了第4个,但是却是第2个执行的。

       b:每个测试方法均以 test 开头,否则是不被unittest识别的。

       c:在unittest.main()中加 verbosity 参数可以控制输出的错误报告的详细程度,默认是 1,如果设为 0,则不输出每一用例的执行结果,即没有上面的结果中的第1行;如果设为 2,则输出详细的执行结果

  3.组织TestSuite

        a:确定测试用例的顺序,哪个先执行哪个后执行?

        b:如果测试文件有多个,怎么进行组织?

  TestLoder加载TestCase几种方法:

  

   

   

  4. 生成结果到文件:

  

  5. test fixture——setUp(),tearDown()方法

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

  class TestMathFunc(unittest.TestCase):

# setUp 和 tearDown方法会在每个测试方法执行前及执行后执行一次,setUp用来为测试准备环境,tearDown用来清理环境已备之后的测试
def setUp(self):
print 'do something before test.prepare environment'

def tearDown(self):
print 'do something after test.clean up'
  如果想要在所有case执行之前准备一次环境,并在所有case执行结束之后再清理环境,我们可以用 setUpClass() 与tearDownClass():
  class TestMathFuncTwo(unittest.TestCase):

#如果想要在所有case执行之前准备一次环境,并在所有case执行结束后再清理环境,我们可以用setUpClass()与tearDownClass(),注意:@classmethod必须加,否则报错
@classmethod
def setUpClass(cls):
print 'This setUpClass() method only called once'

@classmethod
def tearDownClass(cls):
print 'This tearDownClass() method only called once too'
  6. 跳过某个case

  

  

  7. 用HTMLTestRunner输出HTML报告

  HTMLTestRunner是一个第三方的unittest HTML报告库,首先我们下载HTMLTestRunner.py,并放到当前目录下,或者你的’#:\Python\Lib’下,就可以导入运行了

  

 ps:本文有部分内容摘自网络,链接:http://blog.csdn.net/huilan_same/article/details/52944782

 

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服