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下尝试多线程编程
Apr 28 Python
用Python计算三角函数之atan()方法的使用
May 15 Python
Python的迭代器和生成器
Jul 29 Python
python 连接sqlite及简单操作
Jun 30 Python
使用tensorflow实现AlexNet
Nov 20 Python
python中set()函数简介及实例解析
Jan 09 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
python爬虫添加请求头代码实例
Dec 28 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
python 实现压缩和解压缩的示例
Sep 22 Python
Python实现机器学习算法的分类
Jun 03 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 mysql Errcode: 28 终极解决方法
2009/07/01 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
JS画线(实例代码)
2013/11/20 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
2019/10/26 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
Python装饰器的函数式编程详解
2015/02/27 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
python实现事件驱动
2018/11/21 Python
python制作简单五子棋游戏
2019/06/18 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
Java的类与C++的类有什么不同
2014/01/18 面试题
餐厅考勤管理制度
2014/01/28 职场文书
承诺书怎么写
2014/03/26 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
员工开除通知书
2015/04/25 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
九不准学习心得体会
2016/01/23 职场文书