设为首页 收藏本站
查看: 796|回复: 0

[经验分享] python unittest用法

[复制链接]

尚未签到

发表于 2017-4-24 11:04:27 | 显示全部楼层 |阅读模式
  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

#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)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-368567-1-1.html 上篇帖子: 常用Python模块 下篇帖子: python-链表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表