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工程师面试题 与Python基础语法相关
Jan 14 Python
Python 元类实例解析
Apr 04 Python
python脚本开机自启的实现方法
Jun 28 Python
详解Python绘图Turtle库
Oct 12 Python
Python:slice与indices的用法
Nov 25 Python
python实现字典嵌套列表取值
Dec 16 Python
详解pycharm连接不上mysql数据库的解决办法
Jan 10 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 Python
Python通过socketserver处理多个链接
Mar 18 Python
基于python实现地址和经纬度转换
May 19 Python
django如何自定义manage.py管理命令
Apr 27 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
基于mysql的论坛(6)
2006/10/09 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
Javascript浅谈之this
2013/12/17 Javascript
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
python实现巡检系统(solaris)示例
2014/04/02 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
python tkinter控件布局项目实例
2019/11/04 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
综合办公室个人的自我评价
2013/12/22 职场文书
六查六看自查材料
2014/02/17 职场文书
感恩寄语大全
2014/04/11 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android
Python pyecharts绘制条形图详解
2022/04/02 Python
Web应用开发TypeScript使用详解
2022/05/25 Javascript