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命令行交互提示符的方法
Jan 14 Python
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
May 20 Python
Python图算法实例分析
Aug 13 Python
深入探究Django中的Session与Cookie
Jul 30 Python
python使用itchat实现手机控制电脑
Feb 22 Python
python分治法求二维数组局部峰值方法
Apr 03 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
django迁移文件migrations的实现
Mar 31 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
Apr 07 Python
python接入支付宝的实例操作
Jul 20 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 Python
python flask开发的简单基金查询工具
Jun 02 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
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
php实现两个数组相加的方法
2015/02/17 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
javascript删除option选项的多种方法总结
2013/11/22 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
Python使用requests提交HTTP表单的方法
2018/12/26 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
JPA面试常见问题
2016/11/14 面试题
公司薪酬管理制度
2014/01/31 职场文书
公司募捐倡议书
2014/05/14 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
护士自我推荐信范文
2015/03/24 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server
vue基于Teleport实现Modal组件
2021/05/31 Vue.js