自动生成测试集与运行测试用例
自动构建测试集:unittest.makeSuite
使用此方法,对测试用例有要求:
1. 测试方法都以规定的命名开头
2. 使用makeSuite直接生成测试集
例:
Class TestCount(unittest.TestCase):
Defsetup(self):
Self.obj =Count()
Defteardown(self):
Self.obj = None
Deftest_add(self):
Print(self.obj.add(10,20)== 30)
Deftest_sub(self):
Print(self.obj.sub(10,5)== 5)
Def get_suite():
Suite =unittest.makeSuite(TestCount,prefix = ‘test’)
Print(suite.countTestCases())
Returnsuite
If __name __==’__main__’:
S =get_suite()
Runner= unittest.TextTestRunner()
Runner.run(s)
最简单的方法:unittest.main()
自动检测测试类中所有以test开头的方法
1. 自动查找测试用例
2. 自动构建测试集
3. 自动运行测试用例
例:
Class TestCount(unittest.TestCase):
Defsetup(self):
Self.obj =Count()
Defteardown(self):
Self.obj = None
Deftest_add(self):
Print(self.obj.add(10,20)== 30)
Deftest_sub(self):
Print(self.obj.sub(10,5)== 5)
Def get_suite():
Suite = unittest.makeSuite(TestCount,prefix = ‘test’)
Print(suite.countTestCases())
Returnsuite
If __name __==’__main__’:
Unittest.main()
使用unittest中方法判断结果
判断测试结果:
Unittest常用判断方法 说明
assertNotEqual(a,b) a!=b
assertEqual(a,b) a==b
assertTrue(x) x is true
assertIs(a,b) a is b
assertIsNot(a,b) a not b
assertIsNone(x) x is None
assertIsNotNone(x) x is not none
assertIn(a,b) a in b
assertNotIn(a,b) a not in b
assertIsInstance(a,b) isinstance(a,b) a是否是B的实例
assertNotIsInstance(a,b) not isinstance(a,b)
不符合条件时,会引发异常;符合条件时,不会引发异常
Class TestCount(unittest.TestCase):
Defsetup(self):
Self.obj =Count()
Defteardown(self):
Self.obj = None
Deftest_add(self):
Self.assertEqual(self.obj.add(10,20),30)
Deftest_sub(self):
Self.assertEqual(self.obj.sub(10,5),5)
Def get_suite():
Suite = unittest.makeSuite(TestCount,prefix = ‘test’)
Print(suite.countTestCases())
Returnsuite
If __name __==’__main__’:
Unittest.main()
Unittest自动化测试过程分析
Unittest.Main测试过程分析:
1. 收集测试用例(以test开头的方法)
2. 根据测试Case生成测试集
3. 运行测试集中的测试用例
使用unittest跳过某些测试项
跳过测试用例并给出具体原因(例:此接口需要依赖其他模块才能测试,其他模块未完成)
依赖于某种条件测试(例:软件版本升级,根据模块版本号决定是否执行)
测试结果不计入测试统计
忽略测试用例
Skip(reson) 实质:装饰器
例子:
@unittest.skip(‘Not Test’)
def add(x,y):
pass
例:
Class TestCount(unittest.TestCase):
Defsetup(self):
Self.obj =Count()
Defteardown(self):
Self.obj = None
#不执行add测试用例
@unittest.skip(‘no test’)
Deftest_add(self):
Self.assertEqual(self.obj.add(10,20),30)
Deftest_sub(self):
Self.assertEqual(self.obj.sub(10,5),5)
Def get_suite():
Suite = unittest.makeSuite(TestCount,prefix = ‘test’)
Print(suite.countTestCases())
Returnsuite
If __name __==’__main__’:
Unittest.main()
根据条件跳过测试用例:
skipIf(condition,reason)如果condition为真,跳过
skipUnless(condition,reason)如果condition不为真,跳过
例如:
@unittest.skipIf(Count.Version>1,’LowVersion’)
Def add(x,y):
pass
测试结果与预期值不同,不计入失败统计:
expectedFailure(func)
例子:
@unittest.expectedFailure
Def add(x,y):
Return (x+y)