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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
Jan 31 Python
pandas 读取各种格式文件的方法
Jun 22 Python
python中的插值 scipy-interp的实现代码
Jul 23 Python
python使用rpc框架gRPC的方法
Aug 24 Python
python实现基于信息增益的决策树归纳
Dec 18 Python
pyshp创建shp点文件的方法
Dec 31 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
在Python中获取操作系统的进程信息
Aug 27 Python
python中if及if-else如何使用
Jun 02 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
Jun 04 Python
python工具快速为音视频自动生成字幕(使用说明)
Jan 27 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中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
python实现的文件夹清理程序分享
2014/11/22 Python
PyMongo安装使用笔记
2015/04/27 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
如何唤起类中的一个方法
2013/11/29 面试题
医院办公室主任职责
2013/12/29 职场文书
校运会入场式解说词
2014/02/10 职场文书
护士工作失误检讨书
2014/09/14 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
学校就业保障协议书
2019/06/24 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
Pygame Time时间控制的具体使用详解
2021/11/17 Python
python运算符之与用户交互
2022/04/13 Python
volatile保证可见性及重排序方法
2022/08/05 Java/Android