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脚本帮你找出微信上删除你好友的人
Jan 07 Python
Django URL传递参数的方法总结
Aug 28 Python
Python 稀疏矩阵-sparse 存储和转换
May 27 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
利用Python+阿里云实现DDNS动态域名解析的方法
Apr 01 Python
python实现QQ空间自动点赞功能
Apr 09 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
Python中的self用法详解
Aug 06 Python
Django中提示消息messages的设置方式
Nov 15 Python
哪些是python中web开发框架
Jun 17 Python
python 爬虫请求模块requests详解
Dec 04 Python
如何在Python中创建二叉树
Mar 30 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
IStream与TStream之间的相互转换
2008/08/01 PHP
php 全局变量范围分析
2009/08/07 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
js获取元素在浏览器中的绝对位置
2010/07/24 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
js左侧三级菜单导航实例代码
2013/09/13 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
Python日期操作学习笔记
2008/10/07 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
销售团队获奖感言
2014/08/14 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
运动会致辞稿
2015/07/29 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
高三数学教学反思
2016/02/18 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技