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 04 Python
Python定时执行之Timer用法示例
May 27 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
python创造虚拟环境方法总结
Mar 04 Python
Python发展史及网络爬虫
Jun 19 Python
Django中从mysql数据库中获取数据传到echarts方式
Apr 07 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 Python
详解Python多线程下的list
Jul 03 Python
python 利用opencv实现图像网络传输
Nov 12 Python
Python快速实现一键抠图功能的全过程
Jun 29 Python
Python制作春联的示例代码
Jan 22 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
php中使用url传递数组的方法
2015/02/11 PHP
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
python进阶教程之循环对象
2014/08/30 Python
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
Python 文件管理实例详解
2015/11/10 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
如何基于Python创建目录文件夹
2019/12/31 Python
如何在 Django 模板中输出 "{{"
2020/01/24 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
校庆接待方案
2014/03/18 职场文书
开发房地产协议书
2014/09/14 职场文书
聘任通知书
2015/09/21 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers