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 相关文章推荐
flask框架视图函数用法示例
Jul 19 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
Python符号计算之实现函数极限的方法
Jul 15 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 Python
python-视频分帧&amp;多帧合成视频实例
Dec 10 Python
关于Python中定制类的比较运算实例
Dec 19 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 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与XML联手进行网站编程代码实例
2008/07/10 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
网上抓的一个特效
2007/05/11 Javascript
img标签中onerror用法
2009/08/13 Javascript
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
用python实现面向对像的ASP程序实例
2014/11/10 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
python构建基础的爬虫教学
2018/12/23 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python八皇后问题解答过程详解
2019/07/29 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
估算杭州有多少软件工程师
2015/08/11 面试题
建筑毕业生自我鉴定
2013/10/18 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
员工试用期自我评价
2014/09/18 职场文书
安全教育培训心得体会
2016/01/15 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书