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()



