下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

关于python单元测试的方法

作者:课课家教育     来源: http://www.kokojia.com点击数:896发布时间: 2016-03-30 16:23:29

标签: python测试python代码python

大神带你学编程,欢迎选课

    本文主要介绍Python单元测试的方法,作为程序员,懂得测试,这是必须的职业技能。希望每个人都能成为测试高手是不科学的,在中小企业里,懂得测试简直是优秀程序员的标志啊。下面罗列的方法有兴趣的朋友可以试试!

关于python单元测试的方法_python测试_python代码_python_课课家

  mock

  在介绍具体的测试方法之前,先介绍一下mock,简单来说,mock的作用就是要达到一种挂羊头卖狗肉的效果。例如,你想测试一个web客户端,如果为了测试去搭建一个真实的web服务器,这个代价就太大了。这时候,我们就可以创建一个mock对象,通过一些接口模拟一个web服务器,从而简化了测试的难度,而且这样一个mock对象,可控性很好,模拟延时、断线等都非常简单,而如果是真实的服务器程序就要麻烦的多了。

  Tim Mackinnon总结了一些需要使用mock对象的情况:

  1、真实对象具有不可确定的行为(产生不可预测的结果,如股票的行情)

  2、真实对象很难被创建(比如具体的web容器)

  3、真实对象的某些行为很难触发(比如网络错误)

  4、真实情况令程序的运行速度很慢

  5、真实对象有用户界面

  6、测试需要询问真实对象它是如何被调用的(比如测试可能需要验证某个回调函数是否被调用了)

  7、真实对象实际上并不存在(当需要和其他开发小组,或者新的硬件系统打交道的时候,这是一个普遍的问题)

  Python中的mock模块就是这个作用,使用pip install mock就可以安装,在3.3之后,这个模块归入了后边要讲的unittest模块,也成了标准库的一部分了。

  下面的内容基本都是mock文档中的东西,简单翻译一下放在这里。

  Mock和 MagicMock是mock模块中核心的两个类,当你访问这些类的实例对象的某个属性时,这些对象会为你创建这些属性(如果不存在)并且会记录下你使用这些属性的方式。你可以指定这些对象被调用时的返回值或者可用的属性,然后使用断言对结果进行验证。你也可以使用side_effect来抛出异常或者是mock对象被调用时返回不同的值。

  

  使用patch装饰器可以很容易的模拟一个类或者其对象。

  

  doctest

      doctest是Python中非常基本的一个测试方式,从名字可以看得出来,它是基于文档的测试,那么是这个文档有什么格式要求呢?简单的说就是测试用例都要写的和python交互方式下的输入输出一致,而其他格式的文字这可以当作是注释。假设文件shape.txt的内容如下

  我们想要测试一个模块shape,其中有一个类Point和Circle。类Point代表一个二维空间中的点,而Circle这代表一个圆形,其拥有一个方法area返回计算其面积

  

  运行python -m doctest shape.txt 即可进行doctest。简单来说,doctest就像是个Python的命令行一样,把<<<之后的内容执行,然后与紧随在之后的输出进行对比。如执行circle.x,判断是不是为5,执行circle.area(),看起结果是否等于78.53981633974483

  unittest

  doctest虽然简单易用,但是当测试用例需要很多准备工作时,就显得力不从心,这是就该unittest大显身手的时候了。关于unittest,这篇文章就不说了,说多了没用,实干出真知。

赞(21)
踩(3)
分享到:
华为认证网络工程师 HCIE直播课视频教程