参考资料:http://pyunit.sourceforge.net/pyunit_cn.html ;http://docs.python.org/2/library/unittest.html

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)

代码: ut2.py

#!/usr/bin/env python
#encoding: 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"test",
"showid": u"130e28f0fe0811e0a046",
"total_pv": 14503214,
"pubdate": u"2012-07-07 01:22:47",
"tags": [
"sword",
"scar"
],
"showname" : u"sword scar",
"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")
self.assertEqual(r["username"], u"test") 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)

测试:

这个测试,使用TestLoader的loadTestsFromTestCase方法加载测试案例的类testCaseClass,通过unittest.TestSuite建立测试套件,以此替代了 unittest.main()。

python unittest 2的更多相关文章

  1. 从python run 和python unittest两种eclipse运行方式深入理解if __name__ == "__main__"

    在写一个简单的python测试程序的时候,发现eclipse中Run as "Python run 和 Python unittest”结果不一样?为什么会不一样? 先贴一下代码段: # - ...

  2. 自动化测试神器 之 python unittest 断言

    自动化测试的最后一步需要判断结果是否正确,而正确设置断言可以帮助判断测试用例的执行结果,从而提高自动化测试的效率,python unittest  提供了一个比较完整的断言方法.unittest框架测 ...

  3. 第二种方式,修改python unittest的执行顺序,使用猴子补丁

    1.按照测试用例的上下顺序,而不是按方法的名称的字母顺序来执行测试用例. 之前的文章链接 python修改python unittest的运行顺序 之前写的,不是猴子补丁,而是要把Test用例的类名传 ...

  4. Pycharm上python unittest不执行"if __name__ == '__main__' "问题or选择非unittest run

    转:http://www.cnblogs.com/csjd/p/6366535.html python unittest不执行"if __name__ == '__main__' " ...

  5. 简单实现接口自动化测试(基于python+unittest)

    简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...

  6. python+unittest 搭建简易的接口测试框架

    主要介绍如何使用python+unittest快速搭建一个接口测试的框架 1.安装python  unittest 2.新建一个python项目ApiTest 在setUp和setDown里设置一些需 ...

  7. Python unittest基本框架组成(1)

    Python的标准库——unittest(可以实现自动化测试框架的搭建) python unittest四大组成“元件”: test fixture(测试脚手架)——测试代码的运行环境,指测试准备前和 ...

  8. Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport  多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...

  9. 接口自动化-python unittest+requests+HTMLrunner

    从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...

  10. Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发接口化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLRe ...

随机推荐

  1. jvm面试题

     1.虚拟机的类加载机制 1.1.什么是虚拟机的类加载机制 在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class).而JVM把Class文件中的类描述数据从文件加载 ...

  2. Mockito 简单使用

    有一个月没写博客了,以后再忙也要抽时间写啊. 目的 正常情况下,如果要对 UserService 中方法的测试,那么其依赖的 UserDao 也要可以调通,但是,UserDao 可能并不是直接到 DB ...

  3. Adventures in Functions

    速度还行,两天看完一章,就是有细节没去扣.书上的大部分知识点和代码都看了,这个还是可以的. 今天继续来学习函数的高级特性,要涉及到以下的主题. 内联函数(inline function) 引用变量(r ...

  4. velocity单引号与双引号

    (1)最外层是用单引号包围时,双引号直接使用就可以了,两个连续的单引号表示一个单引号:#set($var2 = 'A"B''C') --> $var2 的值为 A"B'C(2 ...

  5. Python MQTT订阅获取发布信息字典过滤

    起因是因为 订阅的时候,获取到的 MQTT 信息时,第一条信息好像是连接信息,所以需要过滤他. 接收到的数据如下 必须要过滤这个 name : 1 的字典,操作如下: def on_message(c ...

  6. 记录 dts 里面添加 SD cd

    很多设备树一开始 SD 卡选项并未添加 SD 卡触发 // dts 741 &mmc1 { 742 vmmc-supply = <&vmmcsd_fixed>; 743 s ...

  7. 华为路由器GRE配置

    1. 协议简介 gre(generic routing encapsulation,通用路由封装)协议是对某些网络层协议(如ip 和ipx)的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议 ...

  8. 15.01.23-sql的注入式攻击

    很多网站上有登录和忘记密码的链接,可能存在sql注入的隐患.在忘记密码(把密码发送到邮箱)那里测试. 获取数据 1.'的妙用.在邮箱栏输入emailaddress',如果返回服务器错误,则说明sql注 ...

  9. 连接两个点云中的字段或数据形成新点云以及Opennni Grabber初识

    (1)学习如何连接两个不同点云为一个点云,进行操作前要确保两个数据集中字段的类型相同和维度相等,同时了解如何连接两个不同点云的字段(例如颜色 法线)这种操作的强制约束条件是两个数据集中点的数目必须一样 ...

  10. Php5.5新特性 Generators详解

    在PHP5.5.0版本中,新增了生成器(Generators)特性,用于简化实现迭代器接口(Iterator)创建简单的迭代器的复杂性. 通过生成器,我们可以轻松的使用foreach迭代一系列的数据, ...