python自动单元测试框架doc

python自动单元测试框架doc

ID:36681164

大小:86.51 KB

页数:13页

时间:2019-05-13

python自动单元测试框架doc_第1页
python自动单元测试框架doc_第2页
python自动单元测试框架doc_第3页
python自动单元测试框架doc_第4页
python自动单元测试框架doc_第5页
资源描述:

《python自动单元测试框架doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Python自动单元测试框架  软件的测试是一件非常乏味的事情,在测试别人编写的软件时尤其如此,程序员通常都只对编写代码感兴趣,而不喜欢文档编写和软件测试这类“没有创新”的工作。既然如此,为什么不让程序员在编写软件时自己加入一些用于测试的代码,使测试过程自动化呢?在软件工程中,这一技术称为自动单元测试,本文介绍在用Python开发软件时如何实现这一目标。  一、软件测试  大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活动,而软件测试则是保证质量的关键措施。正像软件熵(softwareentr

2、opy)所描述的那样:一个程序从设计很好的状态开始,随着新的功能不断地加入,程序逐渐地失去了原有的结构,最终变成了一团乱麻(其实最初的“很好的状态”得加个问号)。测试的目的说起来其实很简单也极具吸引力,那就是写出高质量的软件并解决软件熵这一问题。  可惜的是,软件开发人员很少能在编码的过程中就进行软件测试,大部分软件项目都只在最终验收时才进行测试,有些项目甚至根本没有测试计划!随着软件质量意识的增强,许多软件开发组织开始转向UML、CMM、RUP、XP等软件工程方法,以期提高软件质量,并使软件开发过程更加可控,好在这些方法对测试都提出了很严格的要求,从而使得测试

3、在软件开发过程的作用开始真正体现出来。  软件测试作为一种系统工程,涉及到整个软件开发过程的各个方面,需要管理人员、设计人员、开发人员和测试人员的共同努力。作为软件开发过程中的主要力量,现今的程序员除了要编写实现代码外,还承担着单元测试这一艰巨任务,因此必须采用新的工作模式:·编写和维护一套详尽的单元测试用例;·先构造单元测试和验收测试用例,然后再编写代码;·根据构造的测试用例来编写代码。  单元测试负责对最小的软件设计单元(模块)进行验证,它使用软件设计文档中对模块的描述作为指南,对重要的程序分支进行测试以发现模块中的错误。由于软件模块并不是一个单独的程序,为

4、了进行单元测试还必须编写大量额外的代码,从而无形中增加了开发人员的工作量,目前解决这一问题比较好的方法是使用测试框架。测试框架是在用XP方法进行单元测试时的关键,尤其是在需要构造大量测试用例时更是如此,因为如果完全依靠手工的方式来构造和执行这些测试,肯定会变成一个花费大量时间并且单调无味的工作,而测试框架则可以很好地解决这些问题。  使用Python语言的开发人员可以使用StevePurcell编写的PyUnit作为单元测试框架,通过将单元测试融合到PyUnit这一测试框架里,Python程序员可以更容易地增加、管理、执行测试用例,并对测试结果进行分析。此外,使

5、用PyUnit还可以实现自动单元测试(回归测试)。  二、规范Python单元测试  测试是一个贯穿于整个开发过程的连续过程,从某个意义上说,软件开发的过程实际上就是测试过程。正如MartinFowler所说的“在你不知道如何测试代码之前,就不该编写程序。而一旦你完成了程序,测试代码也应该完成。除非测试成功,你不能认为你编写出了可以工作的程序。”  测试最基本的原理就是比较预期结果是否与实际执行结果相同,如果相同则测试成功,否则测试失败。为了更好地理解PyUnit这一自动测试框架的作用,先来看一个简单的例子,假设我们要对例1中的Widget类进行测试:  例1.

6、widget.py  #将要被测试的类  classWidget:  def__init__(self,size=(40,40)):  self._size=size  defgetSize(self):  returnself._size  defresize(self,width,height):  ifwidth0orheight<0:  raiseValueError,"illegalsize"  self._size=(width,height)  defdispose(self):  pass  采用手工方式进行单元测试的Python程序员很可能会写

7、出类似例2的测试代码来,  例2.manual.py  fromwidgetimportWidget  #执行测试的类  classTestWidget:  deftestSize(self):  expectedSize=(40,40);  widget=Widget()  ifwidget.getSize()==expectedSize:  print"test[Widget]:getSizeworksperfected!"  else:  print"test[Widget]:getSizedoesn'twork!"  #测试  if__name__=='

8、__main__':  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。