python单测框架_Python单元测试框架——unittest

本文介绍了Python的unittest测试框架,讲解了核心概念如测试用例TestCase、测试套件TestSuite、测试加载器TestLoader、测试运行器TextTestRunner和测试结果TextTestResult。详细阐述了测试流程,包括如何编写测试用例、组织TestSuite、使用setUp和tearDown方法以及如何生成测试报告。此外,还提到了跳过测试用例和HTMLTestRunner生成HTML报告的方法。
摘要由CSDN通过智能技术生成

一、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.准备待测方法:

mathfunc.py

a043eae4371497784f49f1d2be8df9d5.png

2. 为以上方法写测试:

cb75bdeebd95ed928563ba974a709573.png

78984b6aa8e30395510026e8e0ea704f.png

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

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几种方法

b101b3a6827f43fe251f0f7e6acc8c65.png

2301ad1ee20425a63f109551752ebb2c.png

e1a5b5f45fff5845bda15deb07dbcca0.png

4. 生成结果到文件:

2309e46229161cf9c1d18785923e2e6a.png

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

4cdd492274896870646c08541841bd13.png

18dc7521dd57a22d88c09854e5fe770d.png

7. 用HTMLTestRunner输出HTML报告

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

92903797c69b906e2855bf2f49d61150.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值