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的Django框架中实现Hacker News的一些功能
Apr 17 Python
Python实现的Google IP 可用性检测脚本
Apr 23 Python
Python端口扫描简单程序
Nov 10 Python
python 读写中文json的实例详解
Oct 29 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
python 对象和json互相转换方法
Mar 22 Python
python和flask中返回JSON数据的方法
Mar 26 Python
Python+OpenCV实现实时眼动追踪的示例代码
Nov 11 Python
解决Python中回文数和质数的问题
Nov 24 Python
Python通过Pillow实现图片对比
Apr 29 Python
通过cmd进入python的步骤
Jun 16 Python
Python importlib模块重载使用方法详解
Oct 13 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
vue中v-model动态生成的实例详解
2017/10/27 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
python二叉树的实现实例
2013/11/21 Python
Python 不同对象比较大小示例探讨
2014/08/21 Python
Python数组定义方法
2016/04/13 Python
python 中random模块的常用方法总结
2017/07/08 Python
浅谈Python中的私有变量
2018/02/28 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
python几种常用功能实现代码实例
2019/12/25 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
python3实现飞机大战
2020/11/29 Python
python中remove函数的踩坑记录
2021/01/04 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
extern在函数声明中是什么意思
2014/01/19 面试题
计算机应用与科学个人的自我评价
2013/11/15 职场文书
小学生防溺水广播稿
2014/01/12 职场文书
个人收入证明范本
2014/09/18 职场文书
房屋所有权证明
2014/10/20 职场文书
技术员岗位职责
2015/02/04 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server