测试的常用规则

  1. 一个测试单元必须关注一个很小的功能函数,证明它是正确的;
  2. 每个测试单元必须是完全独立的,必须能单独运行。这样意味着每一个测试方法必须重新加载数据,执行完毕后做一些清理工作。通常通过setUp()和setDown()方法处理;
  3. 编写执行快速的测试代码。在某些情况下,测试需要加载复杂的数据结构,而且每次执行的时候都要重新加载,这个时候测试执行会很慢。因此,在这种情况下,可以将这种测试放置一个后台的任务中。
  4. 采用测试工具并且学着怎么使用它。
  5. 在编写代码前执行完整的测试,而且在编写代码后再重新执行一次。这样能保证你后来编写的代码不会破坏任何事情;
  6. 在提交代码前执行完整的测试;
  7. 如果在开发期间被打断了工作,写一个打断的单元测试,关于你下一步将要开发的。当你回来工作时,你能知道上一步开发到的指针;
  8. 单元测试函数使用长的而且具有描述性的名字。在正式执行代码中,可能使用square()或sqr()取名,但是在测试函数中,你必须取像test_square_of_number_2()、test_square_negativer_number()这些名字,这些名字描述更加清楚;
  9. 测试代码必须具有可读性;
  10. 单元测试对新进的开发人员来说是工作指南。

二、常见的测试框架

2.1 Unittest

unittest是Python内置的标准类库。它的API跟Java的JUnit、.net的NUnit,C++的CppUnit很相似。

通过继承unittest.TestCase来创建一个测试用例。

具体请参考 文档 。

举个例:

import unittestdef fun(x): return x + 1 class MyTest(unittest.TestCase): def test(self): self.assertEqual(fun(3), 4) 

执行后成功。

但是,如果将期望的结果改成5,则执行的结果如下图所示:

2.2 Doctest

doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段,然后尝试执行并验证结果.即使从没接触过 doctest,我们也可以从这个名字中窥到一丝端倪。“它看起来就像代码里的文档字符串(docstring)一样” 如果你这么想的话,就已经对了一半了。

举个例子:

def square(x):"""Squares x. >>> square(2) 4 >>> square(-2) 4 >>> square(5) 25 """ return x * x if __name__ == '__main__': import doctest doctest.testmod() 

当执行该代码后,会执行文档内>>> 后面的测试代码,并与下一行的结果进行比对。执行的结果如下:

但是,如果我们把结果改一下,square(2)的结果改成5,测试代码如下:

def square(x):"""Squares x. >>> square(2) 5 >>> square(-2) 4 >>> square(5) 25 """ return x * x if __name__ == '__main__': import doctest doctest.testmod() 

执行的测试结果如下所示:

2.3 py.test

py.test是unittest的替代工具。

尽管它是一个功能丰富、灵活的测试框架,但是它的语法很简单。创建一个单元测试就像编写一个模块一样。相比unittest,实现相同的测试功能,py.test做的事情更少。

py.test详细 文档 。

首先,安装py.test

pip install pytest

第二步,编写测试代码

def func(x):return x + 1 def test_answer(): assert func(3) == 5 

第三步,执行测试代码。

  • 找到pytest安装路径。
  • 用其所在的解析器(python.exe)执行test.py ,执行命令比如:

执行的结果如下图所示:

2.4 Nose

Nose是对unittest的扩展,使得python的测试更加简单。nose自动发现测试代码并执行,nose提供了大量的插件,比如测试输出的xUnitcompatible,覆盖报表等等。

nose的详细文档: https://nose.readthedocs.org/en/latest/

注意:nose本身是支持python3的,但是很多它的插件不支持。

2.5 tox

最大的特色,是自动最测试环境的管理以及使用多个解析器配置进行测试。

tox的详细文档: http://testrun.org/tox/latest/

2.6  Unittest2

是unitest的升级版。对API进行了改善以及更好的诊断语法。

unittest2的详细文档: https://pypi.python.org/pypi/unittest2

首先,安装

pip install unittest2

为了以后能在unittest与unittest2之间进行切换,最好的代码编写方式如下:

import unittest2 as unittest

class MyTest(unittest.TestCase): ... 

2.7 mock unittest.mock是用来测试python的库。在python3.3版本以后,这个是一个标准库。 对老版本来说,使用pip install mock 进行安装。

mock的精髓在于,你可以使用模拟的对象来替代你的系统的一部分,然后验证后续的执行是否正确。
mock的详细文档:http://www.voidspace.org.uk/python/mock/

转载于:https://www.cnblogs.com/ceshi2016/p/9110695.html

python 几种常用测试框架相关推荐

  1. python如何实现选项功能_python几种常用功能如何实现 python几种常用功能实现代码实例...

    本篇文章小编给大家分享一下python几种常用功能实现代码实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.python 程序退出的几种方式 import sys s ...

  2. python测试用例管理_Python测试框架Pytest的常用插件测试报告

    原标题:Python测试框架Pytest的常用插件测试报告 一.pytest-html 生成 html 测试报告 要求:Python 3.6+ 安装:pip install pytest-html 文 ...

  3. java contains_Java常用测试框架大全,不要只会Junit

    介绍 要做好测试驱动开发,意识习惯最重要,其次也得回编写优雅的单元测试.java测试框架很多,各种断言和注解,有点混乱,编写测试时老师搞不清该用哪个. 本文简单梳理java常用的几个测试工具:Juni ...

  4. python中的doctest_Python测试框架doctest

    doctest是python自带的一个模块.本博客将介绍doctest的两种使用方式:一种是嵌入到python源码中,另外一种是放到一个独立文件. doctest 的概念模型 在python的官方文档 ...

  5. python数据驱动测试设计_GitHub - 13691579846/DataDriverTestFrameWork: python+selenium+pageobject数据驱动测试框架...

    DataDriverTestFrameWork 一.说明 ``本实例为数据驱动测试框架搭建实践`` 二.框架分析 注意!注意!注意!重要的示请说3遍,本项目只用于学习使用,为了你能够成功执行本项目 e ...

  6. python常用的开发环境包括_Python 全栈:Python 四种常用开发环境总结

    包安装和镜像源 先来区分几个小白容易混淆的概念:Python 解释器.PyCharm.Anaconda.Conda 安装.pip 安装.PyCharm 是 Python 常用的集成开发环境,全称 In ...

  7. Spark - OnYARN 模式搭建,并使用 Scala、Java、Python 三种语言测试

    一.SparkOnYarn搭建 安装前需要提前安装好 hadoop 环境,关于 HDFS 和 Yarn 集群的搭建可以参考下面我的博客: https://blog.csdn.net/qq_436929 ...

  8. Python几种常用的数据导入方法

    1.通过标准的Python库导入CSV文件:   Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文件.当CSV文件被读入后,可以利用这些数据生成一个NumP ...

  9. webService(二) 几种常用的框架介绍及Axis 服务端搭建。

    一.框架介绍 1.Apache CXF 是由XFire和 Celtix 两个现有的项目进行了重组而形成的新框架,能够与spring完美衔接.支持WS-Addressing.WS-Policy.WS-R ...

最新文章

  1. WordCount扩展与优化
  2. 【ACM】杭电OJ 1003。
  3. 一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到...
  4. oracle pde文件导入
  5. 科大星云诗社动态20210210
  6. 在气候灾难的时代,这些游戏正在用自己的方式去重新审视自然
  7. AttributeError: module 're' has no attribute 'sub'
  8. java水泡_JAVA图像处理系列(八)——艺术效果:水泡
  9. 我的第一个*.SYS
  10. 最好的休息,不是睡觉
  11. django3数据库设计之商城项目
  12. 编程基本功:变量局部化的教训
  13. 网易BUFF产品体验报告
  14. 服务器怎么在线播放flv视频,服务器无法播放flv文件
  15. 微型计算机外部设备接口,第五章 微型计算机输入输出接口
  16. HTML页面限制与禁止
  17. STM32项目设计:基于STM32的风向风速测量仪
  18. 综述:演化遗传学发展历史简介
  19. C++ 数据结构之队列queue (henu.hjy)
  20. 中国定向公开赛海南昌江站开赛 600余名选手穿越雨林

热门文章

  1. 数据结构之并查集:并查集的介绍与Python代码实现——18
  2. Vue权限控制——动态注册路由
  3. 论文阅读 - Group Normalization
  4. Hive是如何让MapReduce实现SQL操作的?
  5. 天池 在线编程 寻找字母(计数)
  6. LeetCode 800. 相似 RGB 颜色
  7. LeetCode 110. 平衡二叉树(二叉树高度)
  8. LeetCode 217. 存在重复元素(哈希)
  9. python装饰器由浅入深_由浅入深理解Python装饰器
  10. python的使用说明_Python 的基本使用说明