在Python中进行自动化单元测试的教程.pdfVIP

在Python中进行自动化单元测试的教程.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在Python中进⾏⾃动化单元测试的教程 ⼀、软件测试 ⼤型软件系统的开发是⼀个很复杂的过程,其中因为⼈的因素⽽所产⽣的错误⾮常多,因此软件在开发 过程必须要有相应的质量保证活动,⽽软件测试则是保证质量的关键措施。正像软件熵(software entropy)所描述的那样:⼀个程序从设计很好的状态开始,随着新的功能不断地加⼊,程序逐渐地失去 了原有的结构,最终变成了⼀团乱⿇(其实最初的很好的状态得加个问号)。测试的⽬的说起来其实 很简单也极具吸引⼒,那就是写出⾼质量的软件并解决软件熵这⼀问题。 可惜的是,软件开发⼈员很少能在编码的过程中就进⾏软件测试,⼤部分软件项⽬都只在最终验收时才 进⾏测试,有些项⽬甚⾄根本没有测试计划!随着软件质量意识的增强,许多软件开发组织开始转向 UML、CMM、RUP、XP等软件⼯程⽅法,以期提⾼软件质量,并使软件开发过程更加可控,好在这些 ⽅法对测试都提出了很严格的要求,从⽽使得测试在软件开发过程的作⽤开始真正体现出来。 软件测试作为⼀种系统⼯程,涉及到整个软件开发过程的各个⽅⾯,需要管理⼈员、设计⼈员、开发⼈ 员和测试⼈员的共同努⼒。作为软件开发过程中的主要⼒量,现今的程序员除了要编写实现代码外,还 承担着单元测试这⼀艰巨任务,因此必须采⽤新的⼯作模式: 编写和维护⼀套详尽的单元测试⽤例; 先构造单元测试和验收测试⽤例,然后再编写代码; 根据构造的测试⽤例来编写代码。 单元测试负责对最⼩的软件设计单元(模块)进⾏验证,它使⽤软件设计⽂档中对模块的描述作为指 南,对重要的程序分⽀进⾏测试以发现模块中的错误。由于软件模块并不是⼀个单独的程序,为了进⾏ 单元测试还必须编写⼤量额外的代码,从⽽⽆形中增加了开发⼈员的⼯作量,⽬前解决这⼀问题⽐较好 的⽅法是使⽤测试框架。测试框架是在⽤XP⽅法进⾏单元测试时的关键,尤其是在需要构造⼤量测试⽤ 例时更是如此,因为如果完全依靠⼿⼯的⽅式来构造和执⾏这些测试,肯定会变成⼀个花费⼤量时间并 且单调⽆味的⼯作,⽽测试框架则可以很好地解决这些问题。 使⽤Python语⾔的开发⼈员可以使⽤Steve Purcell编写的PyUnit作为单元测试框架,通过将单元测试融合 到PyUnit这⼀测试框架⾥,Python 程序员可以更容易地增加、管理、执⾏测试⽤例,并对测试结果进⾏ 分析。此外,使⽤PyUnit还可以实现⾃动单元测试(回归测试)。 ⼆、规范Python单元测试 测试是⼀个贯穿于整个开发过程的连续过程,从某个意义上说,软件开发的过程实际上就是测试过程。 正如Martin Fowler所说的在你不知道如何测试代码之前,就不该编写程序。⽽⼀旦你完成了程序,测试 代码也应该完成。除⾮测试成功,你不能认为你编写出了可以⼯作的程序。 测试最基本的原理就是⽐较预期结果是否与实际执⾏结果相同,如果相同则测试成功,否则测试失败。 为了更好地理解PyUnit这⼀⾃动测试框架的作⽤,先来看⼀个简单的例⼦,假设我们要对例1中的Widget 类进⾏测试: 例1. widget.py 1 2 3 4 5 6 7 8 9 10 11 12# 将要被测试的类 class Widget: def__init__(self, size =(40, 40)): self._size =size def getSize(self): return self._size def resize(self, width, height): if width 0or height 0: raise ValueError, illegal size self._size =(width, height) def dispose(self): pass 采⽤⼿⼯⽅式进⾏单元测试的Python程序员很可能会写出类似例2的测试代码来,例2. manual.py 1 2 3 4 5 6 7 8 9 10 11 12 13from widget import Widget # 执⾏测试的类 class TestWidget: def testSize(self): expectedSize =(40, 40); widget =Widget() if widget.getSize() expectedSize: printtest [Widget]: getSize works perfected! else: printtest [Widget]: getSize doesnt work! # 测试 if__name__ __main__: myTest =TestWid

文档评论(0)

152****1430 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档