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访问纯真IP数据库的代码
May 19 Python
Python中文竖排显示的方法
Jul 28 Python
python 网络编程常用代码段
Aug 28 Python
python 剪切移动文件的实现代码
Aug 02 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
python实现二维插值的三维显示
Dec 17 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 Python
python中 .npy文件的读写操作实例
Apr 14 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
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
php实现的在线人员函数库
2008/04/09 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
php微信开发之谷歌测距
2018/06/14 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
jQuery制作可自定义大小的拼图游戏
2015/03/30 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
2017/09/23 jQuery
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
linux 下实现python多版本安装实践
2014/11/18 Python
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
Python实现的爬虫刷回复功能示例
2018/06/07 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
本科生个人求职自荐信
2013/09/26 职场文书
计算机软件专业求职信
2014/06/10 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
行政助理岗位职责
2015/02/10 职场文书