python标准库系列教程(五)——unittest单元测试(下篇)

640?wx_fmt=gif

640?wx_fmt=jpeg

python进阶教程

机器学习

深度学习

长按二维码关注

进入正文


640?wx_fmt=png

python标准库系列教程(五)——unittest库单元测试(下篇)

声明:前面的python标准库系列文章详细讲解了Python的三大函数式编程库以及集合库,itertools、functools、operators库以及collections库,本文继续python标准库系列文章,本文为第五篇,深入详解python的单元测试原理以及unittest的基本架构,鉴于篇幅较长,第五篇将分为几个小的篇章说明,本文为下篇,后续还会有系列文章更新,希望对小伙伴有所帮助!HTMLTestRunner的使用。


目录

一 HTMLTestRunner

   1.1 简单介绍

   1.2 简单安装

   1.3 简单实例

   1.4 运行结果

二 其他单元测试工具

01

HTMLTestRunner

   简单介绍    

上面的两篇文章介绍了如何输出单元测试的结果,以及如何将输出结果保存为文本文件,但是txt格式的文本执行报告过于简陋,这里我们学习一下借助HTMLTestRunner生成HTML报告。HTMLTestRunner是某位大神基于unittest进行拓展的,可以将单元测试结果以网页的形式加以呈现。
遗憾的是:HTMLTestRunner目前是只支持python2.x版本,所以本文的所有代码均是针对python2.7版本的。

    简单安装     

首先需要下载HTMLTestRunner.py,下载地址:

http://tungwaiyip.info/software/HTMLTestRunner.html

它其实就是一个很小的.py文件,自己下载即可,不支持pip安装。然后

并放到当前目录下,这是针对某一个项目的;如果想要一劳永逸,也可以把它放在python目录下的Lib中,这样所有的跑一趟宏代码都可以使用了,就可以导入运行了。

   简单实例     

首先定义一个需要测试的模块functions.py。该模块里面有四个加减乘除测试函数,代码如下:
def add(a, b):
    return a+b

def minus(a, b):
    return a-b

def multi(a, b):
    return a*b

def divide(a, b):
    return a/b

然后定义一个测试模块,其实HTMLTestRunner模块是对原生的unittest里面的TextTestRunner的改进,所以单元测试的步骤基本上是一样的,定义一个test.py文件,代码如下:

#_*_ coding:utf-8 _*_ 
from functions import * 
import unittest 
from HTMLTestRunner import HTMLTestRunner 
import sys 

class TestFunctions(unittest.TestCase): 

    def test_add(self):  #测试加法的方法 
        self.assertEqual(3, add(1, 2)) 
        self.assertNotEqual(3, add(2, 2)) 

    def test_minus(self): #测试减法的方法 
        self.assertEqual(1, minus(3, 2)) 

    def test_multi(self): #测试乘法的方法 
        self.assertEqual(6, multi(2, 3)) 

    def test_divide(self): #测试除法的方法 
        self.assertEqual(2, divide(6, 3)) 
        self.assertEqual(2.5, divide(5, 2)) 

if __name__ == '__main__':   
    #第一步:构建suite对象   
    suite = unittest.TestSuite()    

    #第二步:将需要测试的Case添加到suite里面,也可以使用TestLoader进行加载   
    tests = [TestFunctions("test_add"), TestFunctions("test_minus"), TestFunctions("test_divide"),TestFunctions('test_multi')]     
    suite.addTests(tests)     

    #第三步:创建runner,并且为runner制定需要写入的stream  
    with open('HTMLReport.html', 'wb') as f:         
        runner = HTMLTestRunner(stream=f, title = 'MathFunc Test Report', description='generated by HTMLTestRunner.',verbosity=2)         
        runner.run(suite) 

注意:

上面的使用步骤仅仅是构建runner的不同,一个是使用TextTestRunner,一个是使用HTMLTestRunner.

上面的代码运行环境为python2.7


    运行结果    

首先需要下载HTMLTestRunner.py,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
它其实就是一个很小的.py文件,自己下载即可,不支持pip安装。然后

并放到当前目录下,这是针对某一个项目的;如果想要一劳永逸,也可以把它放在python目录下的Lib中,这样所有的跑一趟宏代码都可以使用了,就可以导入运行了。

ok test_add (__main__.TestFunctions)HTMLReport.html文件,我们得到如下的结果,640?wx_fmt=png上面通过表格的形式显示出来,一共测试4个,通过3个,失败一个,而且我们点开fail。可以查看具体失败的原因,点击fail,发现如下内容。

640?wx_fmt=png

这是因为在python2中,除法/表示取整,%表示取余;

在python3中除法/表示真除法,而//表示取整,%表示取余。故而在python3中是通过的,在Python2中是不通过的。

总结:上面的网页展示相比较于单纯的文本表示,是不是美观方便很多?

02

其他单元测试工具

testtools 是一个功能类似 unittest 的库,它集合众家标准测试库之所长,和 unittest 相比,功能更为强大,使用更为简单,OpenStack 广泛的利用它编写单元测试。由于在用法上 testtools 和 unittest 类似,所以本节简要介绍 testtols 的特点:

(1)Better assertion methods: 支持 assertIn, assertIs, assertIsInstance 等 assertion


640?wx_fmt=png

2019/01/11

Friday

小伙伴们,单元测试是任何编程语言都不可避免的哦,看完这篇文章你一定会有不一样的收获的,后面还有系列文章连载,请记得关注哦!如果你有需要,就添加我的公众号哦,里面分享有海量资源,包含各类数据、教程等,后面会有更多面经、资料、数据集等各类干货等着大家哦,重要的是全都是免费、无套路分享,有兴趣的小伙伴请持续关注!

推 荐 阅 读


640?wx_fmt=jpeg

赶紧关注我们吧

您的点赞和分享是我们进步的动力!

↘↘↘

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值