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制作花瓣网美女图片爬虫
Oct 28 Python
Python聚类算法之基本K均值实例详解
Nov 20 Python
详解python3百度指数抓取实例
Dec 12 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
使用tensorflow实现线性回归
Sep 08 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
Nov 26 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 Python
python中pymysql包操作数据库方法
Apr 19 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 adodb分页实现代码
2009/03/19 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
PHP处理数组和XML之间的互相转换
2016/06/02 PHP
PHP CURL使用详解
2019/03/21 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
vue实现匀速轮播效果
2020/06/29 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
Python函数中不定长参数的写法
2019/02/13 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
python 发送json数据操作实例分析
2019/10/15 Python
django中media媒体路径设置的步骤
2019/11/15 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
极简鞋类,赤脚的感觉:Lems Shoes
2019/08/06 全球购物
工作个人的自我评价
2014/01/14 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
临床医师个人自我评价
2014/04/06 职场文书
罚站检讨书
2015/01/29 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
Redis RDB技术底层原理详解
2021/09/04 Redis
一文搞懂Redis中String数据类型
2022/04/03 Redis