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将数组的元素导出到变量中(unpacking)
Oct 27 Python
Python探索之修改Python搜索路径
Oct 25 Python
python使用Apriori算法进行关联性解析
Dec 21 Python
Python反射的用法实例分析
Feb 11 Python
Python装饰器用法实例总结
May 26 Python
python 按不同维度求和,最值,均值的实例
Jun 28 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
python3 线性回归验证方法
Jul 09 Python
python+django+rest框架配置创建方法
Aug 31 Python
python如何提升爬虫效率
Sep 27 Python
python使用torch随机初始化参数
Mar 22 Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 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魔术引号所带来的安全问题分析
2014/07/15 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
详解redux异步操作实践
2018/08/15 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
python读写csv文件方法详细总结
2019/07/05 Python
numpy 声明空数组详解
2019/12/05 Python
基于python3的socket聊天编程
2020/02/17 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
水电站项目建议书
2014/05/12 职场文书
ktv好的活动方案
2014/08/17 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
画展邀请函
2015/01/31 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
感恩的心主题班会
2015/08/12 职场文书
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python