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 25 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
python的继承知识点总结
Dec 10 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
Python 调用 zabbix api的方法示例
Jan 06 Python
python中PS 图像调整算法原理之亮度调整
Jun 28 Python
python抓取多种类型的页面方法实例
Nov 20 Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 Python
解决pytorch DataLoader num_workers出现的问题
Jan 14 Python
Python3.9.1中使用match方法详解
Feb 08 Python
Python first-order-model实现让照片动起来
Jun 25 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如何编写易读的代码
2007/07/10 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
强制PHP命令行脚本单进程运行的方法
2014/04/15 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
介绍一下except的用法和作用
2015/01/22 面试题
浙江文明网签名寄语
2014/01/18 职场文书
创业女性典型材料
2014/05/02 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
高一军训决心书
2015/02/05 职场文书
承诺保证书格式
2015/02/28 职场文书
小学教师见习总结
2015/06/23 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
Python基础学习之奇异的GUI对话框
2021/05/27 Python
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技