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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
python自动安装pip
Apr 24 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
python for 循环获取index索引的方法
Feb 01 Python
Python实现的文轩网爬虫完整示例
May 16 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
Jun 21 Python
Django框架视图层URL映射与反向解析实例分析
Jul 29 Python
python matplotlib拟合直线的实现
Nov 19 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
利用Python脚本批量生成SQL语句
Mar 04 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 Python
拿来就用!Python批量合并PDF的示例代码
Aug 10 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和ACCESS写聊天室(二)
2006/10/09 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
在网页里看flash的trace数据的js类
2009/01/10 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
Python使用multiprocessing创建进程的方法
2015/06/04 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
如何在python中执行另一个py文件
2020/04/30 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
英国最大的海报商店:GB Posters
2018/03/20 全球购物
个人自我评价和职业目标
2014/01/24 职场文书
社区庆中秋节活动方案
2014/02/07 职场文书
小学生安全演讲稿
2014/04/25 职场文书
主题班会演讲稿
2014/05/22 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
六年级语文教学反思
2016/03/03 职场文书
MySQL注入基础练习
2021/05/30 MySQL
Mysql中存储引擎的区别及比较
2021/06/04 MySQL
Docker下安装Oracle19c
2022/04/13 Servers