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数据类型之间的转换
Jun 08 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
pandas 快速处理 date_time 日期格式方法
Nov 12 Python
在numpy矩阵中令小于0的元素改为0的实例
Jan 26 Python
如何利用Python模拟GitHub登录详解
Jul 15 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
Mar 09 Python
keras 自定义loss model.add_loss的使用详解
Jun 22 Python
python实现学生成绩测评系统
Jun 22 Python
给Django Admin添加验证码和多次登录尝试限制的实现
Jul 26 Python
python程序的组织结构详解
Dec 06 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 isset empty函数相关面试题及解析
2020/12/11 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
地震发生中逃生十大法则
2008/05/12 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
动态统计当前输入内容的字节、字符数的实例详解
2017/10/27 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
python读取csv文件示例(python操作csv)
2014/03/11 Python
详解python 发送邮件实例代码
2016/12/22 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
生物制药专业求职信
2014/03/11 职场文书
新年寄语大全
2014/04/12 职场文书
内科护士节演讲稿
2014/09/11 职场文书
煤矿安全保证书
2015/02/27 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
Java常用函数式接口总结
2021/06/29 Java/Android