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将文本转换成图片输出的方法
Apr 28 Python
python计算方程式根的方法
May 07 Python
使用python调用zxing库生成二维码图片详解
Jan 10 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
Python实现的径向基(RBF)神经网络示例
Feb 06 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
Python中asyncio与aiohttp入门教程
Oct 16 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
PyTorch中Tensor的维度变换实现
Aug 18 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
Python基于yield遍历多个可迭代对象
Mar 12 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
Jun 05 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
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
快速解决PHP调用Word组件DCOM权限的问题
2017/12/27 PHP
php intval函数用法总结
2019/04/14 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
JavaScript中AOP的实现与应用
2019/05/06 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python实现PID算法及测试的例子
2019/08/08 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
生产总经理岗位职责
2013/12/19 职场文书
《愚公移山》教学反思
2014/02/20 职场文书
后勤服务中心总经理工作职责
2014/03/03 职场文书
校园安全广播稿范文
2014/09/25 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
实习介绍信范文
2015/05/05 职场文书
民间借贷借条范本
2015/05/25 职场文书
污染环境建议书
2015/09/14 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript