本文共 2528 字,大约阅读时间需要 8 分钟。
unittest 是python 的单元测试框架,在python 的官方文档中,对unittest有详细的介绍,。
unittest 单元测试提供了创建测试用例,测试套件以及批量执行的方案, unittest 在安装pyhton 以后就直接自带了,直接import unittest 就可以使用。
作为单元测试的框架, unittest 也是可以对程序最小模块的一种敏捷化的测试。利用单元测试框架,首先创建一个类,该类继承unittest的TestCase,这样可以把每个case看成是一个最小的单元, 由测试容器组织起来,最后直接执行,同时生成测试报告。
unittest 各组件的关系为:
创建测试套件:(suit)
1.addTest 2.makeSuit 3.TestLoad 4.discover 由上到下,粒度越来越大unittest 框架默认加载测试用例的顺序是根据ASCII 码的顺序,数字与字母的顺序为: 0 ~ 9,A ~ Z,a ~ z 。
eg: TestAdd 类会优先于TestBdd 类被发现, test_aaa() 方法会优先于test_ccc() 被执行。addTest()方法按照增加顺序来执行。
@unittest.skip(u'The function was canceled, neglects to perform thecase')
断言方法 | 断言描述 |
---|---|
assertEqual(arg1, arg2, msg=None) | 验证arg1=arg2,不等则fail |
assertNotEqual(arg1, arg2, msg=None) | 验证arg1 != arg2, 相等则fail |
assertTrue(expr, msg=None) | 验证expr是true,如果为false,则fail |
assertFalse(expr,msg=None) | 验证expr是false,如果为true,则fail |
assertIs(arg1, arg2, msg=None) | 验证arg1、arg2是同一个对象,不是则fail |
assertIsNot(arg1, arg2, msg=None) | 验证arg1、arg2不是同一个对象,是则fail |
assertIsNone(expr, msg=None) | 验证expr是None,不是则fail |
assertIsNotNone(expr, msg=None) | 验证expr不是None,是则fail |
assertIn(arg1, arg2, msg=None) | 验证arg1是arg2的子串,不是则fail |
assertNotIn(arg1, arg2, msg=None) | 验证arg1不是arg2的子串,是则fail |
assertIsInstance(obj, cls, msg=None) | 验证obj是cls的实例,不是则fail |
assertNotIsInstance(obj, cls, msg=None) | 验证obj不是cls的实例,是则fail |
通过HTMLTestRunner.py 来生成测试报告。
HTMLTestRunner支持python2.7。python3可以参见来进行修改。
HTMLTestRunner.py 文件,下载地址:
下载后将其放在testcase目录中去或者放入…\Python\lib 目录下(windows)。用例不可能每一次运行都成功,肯定运行时候有不成功的时候。如果可以捕捉到错误,并且把错误截图保存,这将是一个非常棒的功能,也会给我们错误定位带来方便。
例如编写一个函数,关键语句为driver.get_screenshot_as_file:
def savescreenshot(self,driver,file_name):if not os.path.exists('./image'):os.makedirs('./image')now=time.strftime("%Y%m%d-%H%M%S",time.localtime(time.time()))#截图保存driver.get_screenshot_as_file('./image/'+now+'-'+file_name)time.sleep(1)
python 的unittest 没有自带数据驱动功能。所以如果使用unittest,同时又想使用数据驱动,那么就可以使用DDT来完成。
ddt的安装:
pip install ddtpython setup.py install
ddt使用方法:(参考文档)
转载地址:http://vhjwi.baihongyu.com/