一、unittest核心组件
1、TestCase:测试用例类,用来定义测试用例函数的
2、TestSuite:测试套件,用来收集测试用例的
3、TestRunner:测试用例运行类,用来执行测试用例的,以测试套件维度去执行
4、TestFixture:测试脚手架,前置条件,后置处理
二、测试流程
1、TestCase:先定义测试用例类,在测试用例类中写测试方法
2、TestSuite:收集你要执行的测试用例类或者文件里面的测试方法,放到测试套件
3、TestRunner:将收集好的测试条件放到测试用例运行器去执行,并收集测试结果
4、TestFixture:做好前置条件和后置处理
三、如何写测试用例?TestCase
1、导入模块:import unittest,继承TestCase类
2、定义一个测试用例类:类名称必须Test开头
3、定义测试方法:测试方法也必须是test开头,必须写在测试用例类里面
4、框架执行入口:unittest.main(),自动收集当前py文件的测试用例,然后执行
四、测试用例应该包含哪些东西?
1、前置条件(如果没有可以不写):sql语句执行、数据库连接创建、工具类的实例化
2、测试步骤(业务逻辑):数据替换、数据驱动
3、测试结果断言:响应结果断言、数据库数据断言
4、后置处理(如果没有可以不写):数据清理、数据库连接关闭
五、用例执行顺序
按照测试用例方法名称的ascll码顺序
六、用例断言
断言的特点:
1、unittest以程序运行过程中是否抛出异常来判断用例是否执行成功
2、如果断言失败程序会抛出异常,框架就会把这个用例标记为失败
3、只要你的程序中执行出现了其他异常,框架也会去捕获异常并将用例标记为失败
异常捕获与异常抛出
1、try...except 捕获到的异常一定要抛出来给框架,否则框架就会认为用例执行成功的
2、手动抛异常:raise AssertionError(e)
class TestDemo(unittest.TestCase):
def test01(self):
try:
print('测试用例01')
self.assertEqual(1, 2)
# 捕获异常,如果不手动抛出异常,用例就会通过
except Exception as e:
print('失败原因', e)
# 会自动抛异常
def test02(self):
print('测试用例02')
self.assertEqual('a', 'b')
def test03(self):
try:
print('测试用例03')
self.assertEqual(1, 'a')
except Exception as e:
print('失败原因:', e)
# 捕获异常,但是手动抛出异常
raise AssertionError
if __name__ == '__main__':
unittest.main()
七、用例收集 (TestSuit)
链接:https://note.youdao.com/s/B7FNVdLN 密码:CE57