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中子类调用父类函数的方法示例
Aug 18 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
Python可迭代对象操作示例
May 07 Python
Python中的 is 和 == 以及字符串驻留机制详解
Jun 28 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 Python
Python实现井字棋小游戏
Mar 09 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 Python
如何利用python进行时间序列分析
Aug 04 Python
python使用numpy中的size()函数实例用法详解
Jan 29 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
Feb 20 Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
Apr 06 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速度全攻略
2006/10/09 PHP
JS实现php的伪分页
2008/05/25 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
一些实用的jQuery代码片段收集
2011/07/12 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
python3之微信文章爬虫实例讲解
2017/07/12 Python
python科学计算之scipy——optimize用法
2019/11/25 Python
python代码xml转txt实例
2020/03/10 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
Ellos丹麦:时尚和服装在线
2016/09/19 全球购物
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
劳资人员岗位职责
2013/12/19 职场文书
2014年高三毕业生自我评价
2014/01/11 职场文书
春风行动实施方案
2014/03/28 职场文书
初中家长寄语
2014/04/02 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
根叔历年演讲稿
2014/05/20 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
js实现自动锁屏功能
2021/06/02 Javascript