Python中unittest用法实例


Posted in Python onSeptember 25, 2014

本文实例讲述了Python中unittest的用法,分享给大家供大家参考。具体用法分析如下:

1. unittest module包含了编写运行unittest的功能,自定义的test class都要集成unitest.TestCase类,test method要以test开头,运行顺序根据test method的名字排序,特殊方法:
① setup():每个测试函数运行前运行
② teardown():每个测试函数运行完后执行
③ setUpClass():必须使用@classmethod 装饰器,所有test运行前运行一次
④ tearDownClass():必须使用@classmethod装饰器,所有test运行完后运行一次

2. 示例代码:

#文件名runtest.py
import random
import unittest

class TestSequenceFunctions(unittest.TestCase):

  def setUp(self):
    self.seq = list(range(10))

  def test_shuffle(self):
    # make sure the shuffled sequence does not lose any elements
    random.shuffle(self.seq)
    self.seq.sort()
    self.assertEqual(self.seq, list(range(10)))

    # should raise an exception for an immutable sequence
    self.assertRaises(TypeError, random.shuffle, (1,2,3))

  def test_choice(self):
    element = random.choice(self.seq)
    self.assertTrue(element in self.seq)

  def test_sample(self):
    with self.assertRaises(ValueError):
      random.sample(self.seq, 20)
    for element in random.sample(self.seq, 5):
      self.assertTrue(element in self.seq)

if __name__ == '__main__':
  unittest.main()

3.运行方式:在命令行直接运行这个runtest.py

可以使用unitest.skip装饰器族跳过test method或者test class,这些装饰器包括:
① @unittest.skip(reason):无条件跳过测试,reason描述为什么跳过测试
② @unittest.skipif(conditition,reason):condititon为true时跳过测试
③ @unittest.skipunless(condition,reason):condition不是true时跳过测试

可以自定义skip decorator

#这是一个自定义的skip decorrator
def skipUnlessHasattr(obj, attr):
  if hasattr(obj, attr):
    return lambda func: func
  return unittest.skip("{!r} doesn't have {!r}".format(obj, attr))

skip decorator示例代码:

class MyTestCase(unittest.TestCase):

  @unittest.skip("demonstrating skipping")
  def test_nothing(self):
    self.fail("shouldn't happen")

  @unittest.skipIf(mylib.__version__ < (1, 3),
           "not supported in this library version")
  def test_format(self):
    # Tests that work for only a certain version of the library.
    pass

  @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
  def test_windows_support(self):
    # windows specific testing code
    pass

@unittest.skip("showing class skipping")
class MySkippedTestCase(unittest.TestCase):
  def test_not_run(self):
    pass

4.expected failure:使用@unittest.expectedFailure装饰器,如果test失败了,这个test不计入失败的case数目

希望本文所述对大家Python程序设计的学习有所帮助。

Python 相关文章推荐
python list 合并连接字符串的方法
Mar 09 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
Python实现包含min函数的栈
Apr 29 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
python Kmeans算法原理深入解析
Aug 23 Python
python 魔法函数实例及解析
Sep 25 Python
tensorflow实现测试时读取任意指定的check point的网络参数
Jan 21 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
Feb 27 Python
python实现最速下降法
Mar 24 Python
python 两种方法删除空文件夹
Sep 29 Python
跟老齐学Python之赋值,简单也不简单
Sep 24 #Python
跟老齐学Python之深入变量和引用对象
Sep 24 #Python
Python greenlet实现原理和使用示例
Sep 24 #Python
跟老齐学Python之数据类型总结
Sep 24 #Python
跟老齐学Python之集合的关系
Sep 24 #Python
跟老齐学Python之集合(set)
Sep 24 #Python
跟老齐学Python之有点简约的元组
Sep 24 #Python
You might like
杏林同学录(五)
2006/10/09 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
php获取mysql数据库中的所有表名的代码
2011/04/23 PHP
PHP如何实现跨域
2016/05/30 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
Angular 表单控件示例代码
2017/06/26 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
Python基础之函数用法实例详解
2014/09/10 Python
python输出指定月份日历的方法
2015/04/23 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
超市采购员岗位职责
2014/02/01 职场文书
社区工作感言
2014/02/21 职场文书
党风廉设责任书
2014/04/16 职场文书
软件项目实施计划书
2014/05/02 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
金榜题名主持词
2015/07/02 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
python 使用pandas读取csv文件的方法
2022/12/24 Python