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函数中参数的使用及默认参数的陷阱
Mar 13 Python
Python的时间模块datetime详解
Apr 17 Python
Python实现求笛卡尔乘积的方法
Sep 16 Python
Python处理CSV与List的转换方法
Apr 19 Python
Python微医挂号网医生数据抓取
Jan 24 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
python 创建一维的0向量实例
Dec 02 Python
Python接口测试结果集实现封装比较
May 01 Python
降低python版本的操作方法
Sep 11 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 Python
实操Python爬取觅知网素材图片示例
Nov 27 Python
对象析构函数__del__在Python中何时使用
Mar 22 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操作XML作为数据库的类
2010/12/19 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
Vue 中的compile操作方法
2018/02/26 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
2020/01/12 Javascript
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
python Django批量导入数据
2016/03/25 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
Python tkinter模版代码实例
2020/02/05 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
客服主管岗位职责
2013/12/13 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
python实现简单的井字棋
2021/05/26 Python
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript