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正常时间和unix时间戳相互转换的方法
Apr 23 Python
用Python中的字典来处理索引统计的方法
May 05 Python
python绘图方法实例入门
May 19 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
Python编程实现的图片识别功能示例
Aug 03 Python
pandas 选择某几列的方法
Jul 03 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
python 获取utc时间转化为本地时间的方法
Dec 31 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
Jun 19 Python
numpy实现神经网络反向传播算法的步骤
Dec 24 Python
Win系统PyQt5安装和使用教程
Dec 25 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 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
那些年一起学习的PHP(三)
2012/03/22 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
Laravel find in set排序实例
2019/10/09 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
简单谈谈Python的pycurl模块
2018/04/07 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
工伤事故赔偿协议书
2014/04/15 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
环保倡议书范文
2014/05/12 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
新生儿未入户证明
2015/06/23 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
python基础之文件操作
2021/10/24 Python
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android