推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

基于Python的测试驱动开发框架

更新时间:2019-12-24 12:16:31 大小:2M 上传用户:songhuahua查看TA发布的资源 标签:python 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

本文首先介绍了测试驱动开发,继而介绍了测试模式,描述了测试驱动开发的优势、一般步骤、测试的原则和对一般开发人员的要求,最后比较详细地介绍了几种基于Python的测试框架。


部分文件列表

文件名 大小
基于Python的测试驱动开发框架.pdf 2M

部分页面预览

(完整内容请下载后查看)
|
|
|
科 学 技 术  
Python  
基于  
的测试驱动开发框架  
朱道雨  
(中国船舶重工集团公司第 723 研究所 江苏·扬州 225101)  
本文首先介绍了测试驱动开发而介绍了测试模式述了测试驱动开发的优势般步骤试的原则和  
对一般开发人员的要求后比较详细地介绍了几种基于 Python 的测试框架。  
关键词 测试驱动开发 Python 测试框架  
中图分类号TP3  
文献标识码A  
1 测试驱动开发介绍  
程序片段离编码和测试定义了探索性测试调单元  
测试和集成测试的重要性。  
测试驱动开TDD一种不同于传统开发流程的新型  
的开发方法取了很小的增量式开发方式调测试在软件  
开发过程中的作用TDD 是一种编码之前进行单元测试的软  
件开发思想TDD 先行定义了需求大测试覆盖率而推  
进整个开发过程编写的代码简洁壮且高质量快软  
件开发。  
3 TDD 的优势以及一般步骤  
3.1 TDD 优势  
TDD相较于传统的结构化开发过程方法有以下优势:  
3.1.1 更快更好地迎接需求变化  
根据客户需求编写测试用例注用户反馈和以使用者  
的角度对功能的过程和接口进行设计及时响应需求变更,  
更符合后期开发的需求。同时覆盖完全的单元测试高了  
代码的可靠性。  
2 测试模式介绍  
针对软件开发典型的瀑布模型是一种带有部分反馈  
的自上而下的开发模式文档支持要求高。该模型按照阶  
段划分了检查点终产品只能在后期才能看到最终结果测  
试阶段一般占一半时间件测试和软件开发过程一样遵循  
软件工程原理面以 V 模型和 X 模式为例对测试与开发之  
间的关系进行说明。  
3.1.2 明显地缩短了设计决策的反馈循环  
基于易测试和测试独立性的要求多地依赖于接口通  
过实现松耦合的设计高系统的可扩展性和抗变性时对  
其功能的分解使用过程口都进行了设计。  
3.1.3 降低了后续测试的成本  
2.1 V 测试模型  
V 模型和瀑布开发模型一样在需求分析要设计、  
详细设计码编码等阶段些过程都需考虑对应的测试工  
时设计测试用例制测试计划。V 模型明确标明了测  
试的不同级别楚地描述了测试阶段和开发过程期间各阶  
段的对应的关系求分析产生的错误直到验收测试才能发  
现是其最大的局限性。  
TDD 先考虑代码的使用需求――功能口等再  
确认需求是无歧义的验证的。首先将测试提到编码之前  
并频繁地运行所有测试早地发现或避免错误断地重构  
代码并消除重复设计高代码的重用大地提高代码的健  
壮性。  
3.1.4 提供持续的回归测试  
2.2 X 测试模型  
TDD能帮助开发人员持续地跟踪软件生命周期内的全部  
状态快速地反馈开发人员使开发人员无需过分担心不可  
预知的异常并大胆地实施重构。  
3.1.5 提供合格的文档  
TDD 所产生的单元测试代码是最完美的开发者文档含  
API 如何使用的信息时与最新的代码保持同步。  
3.2 TDD 的一般步骤  
1确当前主要完成的功能形成电子或者书面的记  
录表单;  
2速地编写此功能的测试用例;  
3行测试现新增的测试不能通过测试;  
4动测试程序快让测试程序通过运行  
5构已完成的代码除重复设计化程序结构并  
保证测试通过  
6环完成所有功能。  
1X 模型图  
3.3 测试原则  
如图,X 模型更详细地描述了详细设计和编码阶段的开  
发行为离单程序片段的编码和测试到集成为可执行程  
后测试这些可执行程序。已通过集成测试的成品既可  
封装并提交给用户可作为更大规模集成的一部分对多  
1试隔离同代码的测试相互隔离单块代码的  
测试应只考虑该代码的测试,  
2试列表软件开发的任意阶段加新功能需求  
将相关功能点添加到测试列表中断地完成测试用例,  
260  
2018  
20 /7  
—  
— 科教导电子版·  
年第  
|
|
|
科 学 技 术  
并重构。  
3试驱动完成代码类能设计前先编制测试  
包含回溯。  
4.3 nose 系列  
代码虑如何使用与测试而设计编码。  
由于扩展自 unittest 的扩展nose 也支持类似于 setUpset-  
UpClasssetUpModule 的测试环境创建方式python 的测  
试更加简单nose 自动发现测试代码并执行nose 提供了大量  
4试与断言优先编写代码之前编写测试编制  
代码过程中先编写断言语句编写辅助语句。  
5测试性码设计过程必须具有较强的可测试性, 的插件如测试输出的 xUnitcompatible盖报表等等。  
有助于提高代码的内聚性和复用。  
路径文件数的名字若匹配testMatch那  
就会被认为是一个用例外所有 unittest.TestCase 的子类都  
会被当做测试用例。nose 主要检查一个测试用例的文件夹,  
否则会忽略此文件路径式地避免某个对象被当做测试用  
例的方法是其或其容器添加一个 _test_ 属性且运算结  
6时重构论是功能代码还是测试代码结构不  
合理复的代码要进行及时的重构。  
4 测试框架  
4.1 unittest 测试框架  
(
)
该测试框架中最核心的概念为test casetest suitetest  
runnertext fixtureunittest 提供了 TestCase 基类来构造单元  
测试用例构建测试用例的时候使setUp 方法初始化测  
试环境tearDown方法执行扫尾结束工作并还原测试环境这  
类似于上下文管理器setUp tearDown 每次必须运行一次  
(如图 2。  
果不为 Truebool _test_ == False 即可。  
nose可不使用特定的格式需要一个类容器至不需  
importnose 测试用例的命名仍需以 test_开头。  
4.4 pytest  
作为 unittest 的替代工具pytest 是一个语法简单且功能  
丰富灵活的测试框架比  
unittest现相同的测试功能 py-  
test 更简洁高效持简单的单元测试和复杂的功能测试支  
持参数化持重复执行失败case持运行noseunittest  
编写的测试 case。  
pytest 创建测试环fixture方式过显式指scope  
参数来选择装饰器。一个 fixture 函数的类型一旦定义即确  
scope=functionfixture 函数会在测试用例的前后  
分别调用 setup/teardown试用例的参数只负责引用具体的  
对象不关心作用域setup/teardown 语法与 unittest 的  
兼容性不如 nose fixture 在参数列表中可以明了地知道哪  
tests 使用了一个资源需人为地创建类需分fixture  
应用。而对于一个资源而言teardown 代码是紧密地和 setup  
代码耦合的。常常需在资源 setup 代码的位置处指定资源的  
生命周期的范围来节省测试时间。  
2试流程图  
TestLoader 用来加载 TestCaseTestSuite,可使用 LoadTes-  
tsForm 方法建测试实例add TestSuite 回一  
TestSuite 实例使TextTestRunner 执行测试用例中,  
测试结果保存到 Result 括运行的用例数量功与失败  
信息。Fixture 完成测试环境的搭建和销毁。  
一般而言试类以 Test 开头的类不能带有 _init_方  
试文件以 test 开头或者结尾的文件试函数以 test 开  
pytest 会自动进行收集测试用例pytest.ini 配置文件中,  
python_classes 指定测试类和测试文件python_functions 指定  
测试函数。在 setup.cfg 文件中 norecursedirs 指定禁止目录。  
4.5 unittest2 测试框架  
通过命令行或main函数来启动单元测试main会调用  
run 来执行Runner 执行时执行结果输出到控制台或文  
过设置 verbosity 参数控制执行结果的输出。unittest 框  
架比较笨重且难以扩展须在 TestCase 子类中编写所有的  
单元测试和断言方法须为测试活动建立测试套件。  
4.2 doctest 测试  
unittest2 测试框架是 unittest 的升级版善了 API 以及  
诊断语法于篇幅所限说明一点使import unittest2  
as unittest unittest unittest2 之间进行切换。  
doctest测试框架在文档字符docstring嵌注释些  
注释将各单元模块的期望结果予以表达符串如同交互式  
shell 会话搜索 Python 代码而尝试执行并验证结果。测试  
用例的位置必须放在整个模块文件的开始部分或紧接声明语  
句的下一行verbose 参数用于控制是否输出详细信息,  
默认不输出任何东西非测试失败。  
5 结束语  
TDD系统要进行分层架构立标准一  
致的系统作环境可控力创建高内聚低耦合的结构在  
TDD 实践过程可实现代码的低层设计。而 TDD 并不能直接  
提高设计能力要求开发人员思想上重视测试,掌握重构与  
设计模式等知识而间接改善软件设计。  
当不带任何参数运行 test_basic.py test_basic 导入  
到脚本的命名空间中导入其他希望要测试的模块testmod  
函数去遍历模块本身块函数及其所有文档字符串找出  
所有类似交互式 shell 会话的内容。  
参考文献  
doctest 在解析显式会话时空行作为会话结束来处理。 [ ]  
(
) [  
]
1
Beck,K.测试驱动开发 中文版 M .孙平平译.北京:中国电力出版社, 2004.  
[ ]  
(
)[  
]
2
雨痕.Python3 学习笔记 上卷 M .北京:电子工业出版社,2018.  
可利用文档字符串自定义的函数来解决此问题方面由于  
文档字符串毕竟是字符串换码以要注意\n 这样的序列被  
扩展一方面由 doctest 处理的文档字符串可能会在其内部  
[ ]  
3
[ ]  
Matthew,K.Python机器学习实践,测试驱动的开发方法 M .刘江一,上官明  
,白皓,刘旭威译.北京:机械工业出版社,2017.  
261  
2018  
20 /7  
—  
— 科教导电子版·  
年第  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载