很久没更了,人是有惰性的,不找理由。上文中提到我设计的自动化测试框架,这篇文章就详细讲讲我的框架中使用到的python自带的单元测试框架和数据驱动框架。在testcase模块中,主要是按模块放不同的系统的接口测试脚本。在写接口测试脚本的时候,需要使用到python自带的单元测试框架unittest,它可组织执行测试用例,提供丰富的断言方法,且和开源的报告组件合用可生产自动化测试报告,测试报告在下面的文章中再详细描述。
在写测试脚本的时候,python一般都会用到unittest单元测试框架。在py文件中直接import unittest便可以使用这个库。在写测试类时候需要继承unittest.TestCase 如测试一个create接口写法:class test_Create(unittest.TestCase)。详细描述下经常用到的。1 unittest.main():使用她可以方便的将一个单元测试模块变为可直接运行的测试脚本.
2 unittest.TestSuite():unittest框架的TestSuite()类是用来创建测试套件的。
3 unittest.skip():装饰器,当跳过该测试方法。通常需要调试或者需要选择性跑某些用例时可以使用到。
4 setUp():setUp()方法用于测试用例执行前的初始化工作,每条测试方法开始前都会执行。
5 tearDown():tearDown()方法用于测试用例执行之后的善后工作,每条测试方法执行后都会执行。
6 setUpClass(cls):这个必须要加上装饰器@classmethod,每执行一个测试类前会执行一次。通常获取token的时候可以用到这个。
7 tearDownClass(cls):这个必须要加上装饰器@classmethod,每执行一个测试类后会执行一次。
8 assert*():一些断言方法:在执行测试用例的过程中,最终用例是否执行通过,是通过判断测试得到的实际结果和预期结果是否相等决定的。
assertEqual(a,b,[msg='测试失败时打印的信息']):断言a和b是否相等,相等则测试用例通过。
assertNotEqual(a,b,[msg='测试失败时打印的信息']):断言a和b是否相等,不相等则测试用例通过。
assertTrue(x,[msg='测试失败时打印的信息']):断言x是否True,是True则测试用例通过。
assertFalse(x,[msg='测试失败时打印的信息']):断言x是否False,是False则测试用例通过。
assertIs(a,b,[msg='测试失败时打印的信息']):断言a是否是b,是则测试用例通过。
assertNotIs(a,b,[msg='测试失败时打印的信息']):断言a是否是b,不是则测试用例通过。
assertIsNone(x,[msg='测试失败时打印的信息']):断言x是否None,是None则测试用例通过。
assertIsNotNone(x,[msg='测试失败时打印的信息']):断言x是否None,不是None则测试用例通过。
assertIn(a,b,[msg='测试失败时打印的信息']):断言a是否在b中,在b中则测试用例通过。
assertNotIn(a,b,[msg='测试失败时打印的信息']):断言a是否在b中,不在b中则测试用例通过。
assertIsInstance(a,b,[msg='测试失败时打印的信息']):断言a是是b的一个实例,是则测试用例通过。
assertNotIsInstance(a,b,[msg='测试失败时打印的信息']):断言a是是b的一个实例,不是则测试用例通过。
通常对一个接口写测试脚本,会用到以上的unittest库里的函数。