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编程入门的一些基本知识
May 13 Python
用Python进行简单图像识别(验证码)
Jan 19 Python
Python 16进制与中文相互转换的实现方法
Jul 09 Python
Python列表生成式与生成器操作示例
Aug 01 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
Jun 13 Python
PyQt编程之如何在屏幕中央显示窗体的实例
Jun 18 Python
Python input函数使用实例解析
Nov 22 Python
Python线程条件变量Condition原理解析
Jan 20 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
Python try except异常捕获机制原理解析
Apr 18 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 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
ThinkPHP写第一个模块应用
2012/02/20 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
微信小程序日历组件使用方法详解
2018/12/29 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python实现堆和索引堆的代码示例
2018/03/19 Python
详解django自定义中间件处理
2018/11/21 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
Python中关于浮点数的冷知识
2019/09/22 Python
工程师自我评价怎么写
2013/09/19 职场文书
预备党员思想汇报范文
2013/12/29 职场文书
小学家长学校培训材料
2014/08/24 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
护理实习生带教计划
2015/01/16 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android