python 单元测试框架 ---unittest(一)

本贴最后更新于 729 天前,其中的信息可能已经时异事殊
一.核心组件
1.TestCase:测试用例类,用来定义测试用例函数
2.TestSuite:测试套件,用来收集测试用例
3.TestRunner:测试用例运行类,用来执行测试用例,以套件执行
4.TestFixTure:测试脚手架,测试前置条件、后置处理

二.测试流程(如何做自动化测试)
1.定义测试用例类,在测试用例类中写测试方法
2.收集要执行的测试用例类或文件里面的测试方法,放到测试套件
3.将收集好的测试条件放到测试用例运行器去执行,并收集测试结果
4..做好前置条件、后置处理

三.如何写测试用例(TestCase)
1.导入模块 import unittest
2.定义一个测试用例类:类名必须Test开头
3.定义测试方法:测试方法也必须test开头,必须写在测试用例类里面
4.unittest.main()自动收集当前py文件的测试用例,然后执行

四.测试用例包含哪些内容
1.前置条件(如果没有可以不写):sql执行、数据库连接创建、工具类的实例化
2.测试步骤(业务逻辑):数据替换、数据驱动
3.测试结果断言:响应结果断言、数据库数据断言
4.后置处理(如果没有可以不写):数据清理、数据库连接关闭

五.前置后置
1.类级别
前置:整个测试用例类执行之前执行一次
后置:整个测试用例类执行之后执行一次
    @classmethod
    def setUpClass(cls) -> None:
        print("类级别的 前置")

    @classmethod
    def tearDownClass(cls) -> None:
        print("类级别的 后置")

2.函数级别
前置:每个测试用例执行之前执行一次
后置:每个测试用例执行之后执行一次
    # 函数级别的前置
    def setUp(self) -> None:
        print("函数级别的 前置")

    # 函数级别的后置
    def tearDown(self) -> None:
        print("函数级别的 后置")

六.用例执行顺序
1.按照ASCII码顺序
2.查找对应字符的ASCII码
print(ord("a"))
3.将ASCII码转换为对应的字符
print(chr(97))

七.用例断言(继承testcase类)
self.assertEqual(a,b)       # a==b
self.assertNotEqual(a,b)    # a!=b
self.assertTrue(x)          # bool(x) is Ture
self.assertFalse(x)         # bool(x) is False
self.assertIn(a,b)          # a in b
self.assertNotIn(a,b)       # a not in b
self.assertIs(a,b)          # a is b
self.assertIsNot(a,b)       # s is not b
特点:
1.unittest以程序运行过程中是否抛出异常来判断用例是否执行成功
2.如果断言失败程序会抛出异常,框架就会把这个用例标记为失败
3.只要程序执行过程中抛出其他异常,框架也会捕获异常将用例标记为失败

八、异常捕获与异常抛出
1.try...except
2.try:
     self.assertEqual(a, b)
  except Exception as e:
     raise AssertionError(e)
回帖
请输入回帖内容 ...