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中使用装饰器和元编程实现结构体类实例
Jan 28 Python
Python处理json字符串转化为字典的简单实现
Jul 07 Python
Python实现删除列表中满足一定条件的元素示例
Jun 12 Python
django站点管理详解
Dec 12 Python
Python+matplotlib实现填充螺旋实例
Jan 15 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
python中从str中提取元素到list以及将list转换为str的方法
Jun 26 Python
python字符串替换re.sub()方法解析
Sep 18 Python
使用pytorch实现可视化中间层的结果
Dec 30 Python
python如何变换环境
Jul 21 Python
python实现简单的五子棋游戏
Sep 01 Python
python 制作一个gui界面的翻译工具
May 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
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
360通用php防护代码(使用操作详解)
2013/06/18 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
chrome调试javascript详解
2015/10/21 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
Python_LDA实现方法详解
2017/10/25 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
电话销售经理岗位职责
2013/12/07 职场文书
名人演讲稿范文
2014/09/16 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
政风行风建设整改方案
2014/10/27 职场文书
Python基础之元编程知识总结
2021/05/23 Python
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL