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中optionParser模块的使用方法实例教程
Aug 29 Python
Python实现手写一个类似django的web框架示例
Jul 20 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
Python装饰器简单用法实例小结
Dec 03 Python
python 多进程共享全局变量之Manager()详解
Aug 15 Python
Python logging模块写入中文出现乱码
May 21 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
python 对一幅灰度图像进行直方图均衡化
Oct 27 Python
用python进行视频剪辑
Nov 02 Python
python 中 .py文件 转 .pyd文件的操作
Mar 04 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
javascript定时器完整实例
2015/02/10 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
JavaScript 几种循环方式以及模块化的总结
2020/09/03 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
ubuntu中配置pyqt4环境教程
2017/12/27 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
Python实现图片拼接的代码
2018/07/02 Python
python 整数越界问题详解
2019/06/27 Python
python实现飞船大战
2020/04/24 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
100%羊绒:NakedCashmere
2020/08/26 全球购物
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
平安家庭事迹材料
2014/12/20 职场文书
终止劳动合同通知书
2015/04/16 职场文书
学校运动会简讯
2015/07/20 职场文书
婚宴领导致辞
2015/07/28 职场文书