Python unittest模块用法实例分析


Posted in Python onMay 25, 2018

本文实例讲述了Python unittest模块用法。分享给大家供大家参考,具体如下:

python的unittest模块提供了一个测试框架,只要我们写一个继承unittest.TestCase的类,类中用setUp做初始化,用tearDown做清理。

主要用到的函数有:

failedinfo表示不成立打印信息failedinfo,为可选参数
self.fail([msg])会无条件的导致测试失败,不推荐使用。
self.assertEqual(value1, value2, failedinfo) # 断言value1 == value2
self.assertTrue(表达式, failedinfo) # 断言value为真
self.assertFalse(表达式, failedinfo) # 断言value为假
# 断言肯定发生异常,如果没发生异常,则为测试失败。
# 参数1为异常,参数二为抛出异常的调用对象,剩余参数为传递给可调用对象的参数。
self.assertRaises(ValueError, self.widget.resize, -1, -1)
调用时机的加self,如self.assertEqual(self.seq, range(10)),self.assertTrue(value > 100)

更详细的教程见:http://pyunit.sourceforge.net/pyunit_cn.html

Python代码:

#coding=utf-8
import random
import unittest
class TestSequenceFunctions(unittest.TestCase):
  def setUp(self):
    self.seq = 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, 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)
results_fields = [
  ("username", unicode),
  ("showid", unicode),
  ("total_pv", int),
  ("pubdate", unicode),
  ("tags", list),
  ("showname", unicode),
  ("pg", int),
  ("ext", str),
]
results_fields_map = dict(results_fields)
class TestDictValueFormatFunctions(unittest.TestCase):
  def setUp(self):
    self.results = [{
      "username": u"疯狂豆花",
      "showid": u"130e28f0fe0811e0a046",
      "total_pv": 14503214,
      "pubdate": u"2012-07-07 01:22:47",
      "tags": [
        "轩辕剑",
        "天之痕"
        ],
      "showname" : u"轩辕剑之天之痕",
      "pg" : 1,
      "ext" : "mp4"
    }
    ]
  def test_format(self):
    self.assertTrue(isinstance(self.results, list), "self.results's type must be dict but got {0}".format(type(self.results)))
    for r in self.results:
      for f in results_fields_map:
        value = r.get(f, None)
        self.assertTrue(isinstance(value, results_fields_map[f]), u"{0}'s type must be {1} but got {2}".format(value, results_fields_map[f], type(value)))
        #self.assertTrue(isinstance(value, results_fields_map[f]))
  def test_value(self):
    for r in self.results:
      self.assertEqual(r["pg"], 1)
      self.assertEqual(r["ext"], u"mp4")
if __name__ == '__main__':
  # unittest.main() # 用这个是最简单的,下面的用法可以同时测试多个类
  # unittest.TextTestRunner(verbosity=2).run(suite1) # 这个等价于上述但可设置verbosity=2,省去了运行时加-v
  suite1 = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
  suite2 = unittest.TestLoader().loadTestsFromTestCase(TestDictValueFormatFunctions)
  suite = unittest.TestSuite([suite1, suite2])
  unittest.TextTestRunner(verbosity=2).run(suite)

运行结果:

test_choice (__main__.TestSequenceFunctions) ... ok
test_sample (__main__.TestSequenceFunctions) ... ok
test_shuffle (__main__.TestSequenceFunctions) ... ok
test_format (__main__.TestDictValueFormatFunctions) ... ok
test_value (__main__.TestDictValueFormatFunctions) ... ok

----------------------------------------------------------------------
Ran 5 tests in 0.013s

OK

更多Python相关内容感兴趣的读者可查看本站专题:《Python入门与进阶经典教程》、《Python字符串操作技巧汇总》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python内置函数bin() oct()等实现进制转换
Dec 30 Python
python计算最小优先级队列代码分享
Dec 18 Python
Python 抓取动态网页内容方案详解
Dec 25 Python
浅谈python中的变量默认是什么类型
Sep 11 Python
详解python中的json和字典dict
Jun 22 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
Aug 25 Python
python matplotlib库直方图绘制详解
Aug 10 Python
Python帮你识破双11的套路
Nov 11 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
浅谈keras保存模型中的save()和save_weights()区别
May 21 Python
python数据抓取3种方法总结
Feb 07 Python
Python基础知识之变量的详解
Apr 14 Python
使用Python的Django和layim实现即时通讯的方法
May 25 #Python
matplotlib subplots 调整子图间矩的实例
May 25 #Python
Matplotlib 生成不同大小的subplots实例
May 25 #Python
python opencv3实现人脸识别(windows)
May 25 #Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 #Python
matplotlib savefig 保存图片大小的实例
May 24 #Python
python3连接MySQL数据库实例详解
May 24 #Python
You might like
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
php文件包含的几种方式总结
2019/09/19 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&Firefox] 有文档和例子
2007/05/30 Javascript
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
关于js类的定义
2011/06/28 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
python爬虫的工作原理
2017/03/05 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
Python实现代码块儿折叠
2020/04/15 Python
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
传媒专业推荐信范文
2013/11/23 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
产品质量保证书
2014/04/29 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
项目战略合作意向书
2015/05/08 职场文书
关于环保的宣传稿
2015/07/23 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
python基础之错误和异常处理
2021/10/24 Python
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android