-
UnitTest主要包含的内容
-
TestCase(测试用例)
-
TestSuite(测试套件,把多个TestCase集成到一个测试)
-
TestRunner(执行测试用例)
-
TestLoader(自动从代码中加载多个测试用例)
-
Fiture(UnitTest特性)
-
-
TestSuite使用
-
实例化 suite=unittest.TestSuite()
-
添加用例 suite.addTest(ClassName("MethodName"))
-
添加扩展 suite.addTest(unittest.makeSuite(ClassName))
-
执行 :使用TextTestRunner执行测试用例和测试套件
-
实例化 runner = unittest.TextTestRunner()
-
执行 runner.run(suite)
-
-
-
TestLoader:工作常用,更加简单,discover()方法自动查找py,自动加载py文件中方法
-
使用:suite=unittest.TestLoader().discover("路径","xxx.py")
runner = unittest.TextTestRunner()
runner.run(suite)
-
-
TestSuite与TestLoader区别
-
TestSuite需要手动添加测试用例
-
TestLoader搜索指定目录下指定开头.py文件,并添加测试类中的所有的测试方法,不能指定添加测试方法
-
-
setUp和tearDown的区别
-
必须继承unittest.TestCase类,setUp、tearDown才是一个Fiture
-
setUp、tearDown:如果一个类中有多个测试用例,每执行一个测试用例之前会调用一次setUp,之后会调用一次tearDown
-
setUpClass、tearDownClass:如果一个类中有多个测试用例,执行所有测试用例之前只会调用一次setUpClass,之后只会调用一次tearDownClass
-
setUpModule、tearDownModule:只有在import导入这个模块时会调用一次setUpModule,模块使用完成之后会调用一次tearDownModule
-
setUpXXX:一般做初始化工作
-
tearDownXXX:一般做结束工作
-
-
unittest的常用断言方法
-
assertTrue(expr, msg=None) —— 验证expr是否正确
-
assertFalse(expr, msg=None) —— 验证expr是否错误
-
assertEqual(预期结果,实际结果) —— 验证预期和实际是否一致
-
assertNotEqual(预期结果,实际结果) —— 验证预期和实际是否不等
-
assertIsNone() —— 验证是否为空
-
assertIsNotNone() —— 验证是否不为空
-
assertIn() —— 验证是否在里面
-
assertNotIn() —— 验证是否不在里面
-
-
unittest参数化
-
使用步骤
-
导入from parameterized import parameterized
-
函数装饰器@parameterized.expand([(), ()])
-
或者设置list1全局变量
-
或者将list1写在函数里面后调用
-
-
-
unittest跳过
-
@unittest.skip()
-
注释掉
-
-
unittest测试报告
-
TextTestRunner格式的测试报告
-
第一步:file = open(xxx.txt, "w", encoding="utf8")
-
第二步:
runner=TextTestRunner(stream=file,verbosity=2)
-
第三步:runner.run(suite)
-
第四步:file.close()
-
-
-
-
HTML版的测试报告
-
第一步:复制HTMLTestRunner.py文件到项目文件夹
-
第二步:导入HTMLTestRunner、unittest包
-
第三步:生成测试套件suite=unittest.TestLoader().discover("./", "test*.py")
-
第四步:以只写方式打开测试报告文件f=open("test01.html", "wb")
-
第五步:实例化HTMLTestRunner对象
runner=HTMLTestRunner(stream=f,title="自动化测试报告", description="Chrome浏览器")
stream ---- open函数打开的文件流
title ---- 报告标题
-
第六步:执行runner.run(suite)
-
第七步:关闭文件f.close()
-
-