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的randrange()方法使用教程
May 15 Python
Python的Django框架中自定义模版标签的示例
Jul 20 Python
在Python中定义和使用抽象类的方法
Jun 30 Python
深入理解 Python 中的多线程 新手必看
Nov 20 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
python自动化报告的输出用例详解
May 30 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
Python对接支付宝支付自实现功能
Oct 10 Python
浅谈TensorFlow之稀疏张量表示
Jun 30 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
python 获取计算机的网卡信息
Feb 18 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
php 中文字符入库或显示乱码问题的解决方法
2010/04/12 PHP
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
基于simple_html_dom的使用小结
2013/07/01 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
关于全局变量和局部变量的那些事
2013/01/11 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
wxPython中listbox用法实例详解
2015/06/01 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
AJAX的全称是什么
2012/11/06 面试题
硕士研究生自我鉴定范文
2013/12/27 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
庆祝教师节标语
2014/10/09 职场文书
企业培训简报范文
2015/07/20 职场文书