python中的测试框架


Posted in Python onNovember 13, 2020

一、测试常用规则

  • 一个测试单元必须关注一个很小的功能函数,证明它是正确的;
  • 每个测试单元必须是完全独立的,必须能单独运行。这样意味着每一个测试方法必须重新加载数据,执行完毕后做一些清理工作。通常通过setUp()和setDown()方法处理;
  • 编写执行快速的测试代码。在某些情况下,测试需要加载复杂的数据结构,而且每次执行的时候都要重新加载,这个时候测试执行会很慢。因此,在这种情况下,可以将这种测试放置一个后台的任务中。
  • 在编写代码前执行完整的测试,而且在编写代码后再重新执行一次。这样能保证你后来编写的代码不会破坏任何事情;
  • 在提交代码前执行完整的测试;
  • 如果在开发期间被打断了工作,写一个打断的单元测试,关于你下一步将要开发的。当你回来工作时,你能知道上一步开发到的指针;
  • 单元测试函数使用长的而且具有描述性的名字。在正式执行代码中,可能使用square()或sqr()取名,但是在测试函数中,你必须取像test_square_of_number_2()、test_square_negativer_number()这些名字,这些名字描述更加清楚;
  • 测试代码必须具有可读性;
  • 单元测试对新进的开发人员来说是工作指南。

二、python常用的测试框架

1. unittest

unittest是Python内置的标准类库

unittest 和 JUnit类似,可以说是python的标准单元测试框架,所以有时也被人称为 PyUnit。它使用起来和xUnit 家族其他成员类似。 用的人也比较多。兼容 python2 以及python3 。

2、unittest2

unittest2 可以说是一个针对 unittest测试框架新特性的补丁。它很大程度上和unittest都类似。然后还添加了一些unittest没有的方法。

3、pytest

py.test是unittest的替代工具。

尽管它是一个功能丰富、灵活的测试框架,但是它的语法很简单。创建一个单元测试就像编写一个模块一样。相比unittest,实现相同的测试功能,py.test做的事情更少。
pytest 直接可以通过 @pytest.mark.parametrize 进行参数化,而unittest 则需要借助DDT。

4、nose

Nose是对unittest的扩展,使得python的测试更加简单。nose自动发现测试代码并执行,nose提供了大量的插件,比如测试输出的xUnitcompatible,覆盖报表等等。
基于Python的测试驱动开发实战 也有nose的用法: http://python.jobbole.com/81305/
还有一个特定就是,nose可以采用 @with_setup() 来定义方法的setup和teardown。

5、doctest

doctest模块会搜索那些看起来像交互式会话的 Python 代码片段,然后尝试执行并验证结果。

6、tox

最大的特色,是自动最测试环境的管理以及使用多个解析器配置进行测试。

tox的详细文档: http://testrun.org/tox/latest/

7、mock

unittest.mock是用来测试python的库。

在python3.3版本以后,这个是一个标准库。 对老版本来说,使用pip install mock 进行安装。

mock的精髓在于,你可以使用模拟的对象来替代你的系统的一部分,然后验证后续的执行是否正确。
mock的详细文档:http://www.voidspace.org.uk/python/mock/

以上就是python中的测试框架的详细内容,更多关于python 测试框架的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
在Python中使用成员运算符的示例
May 13 Python
Python变量作用范围实例分析
Jul 07 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
Python程序中用csv模块来操作csv文件的基本使用教程
Mar 03 Python
对numpy和pandas中数组的合并和拆分详解
Apr 11 Python
如何使用Python 打印各种三角形
Jun 28 Python
使用pandas的box_plot去除异常值
Dec 10 Python
Python如何读取文件中图片格式
Jan 13 Python
tensorflow实现训练变量checkpoint的保存与读取
Feb 10 Python
新手常见Python错误及异常解决处理方案
Jun 18 Python
深入了解Python装饰器的高级用法
Aug 13 Python
Django集成MongoDB实现过程解析
Dec 01 Python
Python加载数据的5种不同方式(收藏)
Nov 13 #Python
使用Python解析Chrome浏览器书签的示例
Nov 13 #Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 #Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 #Python
python+flask编写一个简单的登录接口
Nov 13 #Python
jupyter notebook快速入门及使用详解
Nov 13 #Python
Python中pass的作用与使用教程
Nov 13 #Python
You might like
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
Yii框架响应组件用法实例分析
2019/09/04 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
高效的jquery数字滚动特效
2015/12/17 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
JavaScript 几种循环方式以及模块化的总结
2020/09/03 Javascript
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
Python 操作MySQL详解及实例
2017/04/30 Python
python 动态加载的实现方法
2017/12/22 Python
Django中url的反向查询的方法
2018/03/14 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
django 环境变量配置过程详解
2019/08/06 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
喜之郎果冻广告词
2014/03/20 职场文书
对祖国的寄语大全
2014/04/11 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
升职自荐书
2019/05/09 职场文书