接口自动化学习笔记_02 unittest框架使用

一、unittest核心组件(4个)

  • TestCase:测试用例类,用来定义测试用例函数
  • TestSuite:测试套件,用来收集测试用例
  • TestRunner:测试用例运行类,用来执行用例类,一测试套件维度去执行
  • 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. 后置处理(如果没有可以不写):数据清理、数据库连接关闭

五、 前置后置

类级别 @classmethod

  • 前置:测试用例执行之前执行一次(当前测试用例类)
  • 后置:测试用例执行之后执行一次(当前测试用例类)

函数级别

  • 前置:每个测试用例执行之前执行一次
  • 后置:每个测试用例执行之后执行一次
import unittest
import time
class TestDemo(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        print("类级别的前置")

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

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

    def test_01(self):
        time.sleep(1)
        print("测试用例01")

    def test_02(self):
        time.sleep(1)
        print("测试用例02")

    def test_03(self):
        try:
            time.sleep(1)
            self.assertEqual(1,2)
            print("测试用例03")
        except Exception as e:
            # print("错误原因:",e)
            raise AssertionError(e)

    def test_04(self):
        time.sleep(1)
        print("测试用例04")
if __name__ == '__main__':
    unittest.main()

六、用例执行顺序

0-9
1、用例执行按照Ascii码顺序

#打印对应字符的ascii码
print(ord("a"))  #97
#讲ascii转换为对应的字符
print(chr(102))

2、测试用例类

  • 1、测试函数
  • 2、测试文件

七、用例断言(继承TestCase类的断言方法)

self.assertEqual(1,1) 断言是否相等
断言的特点:
1、unittest以程序运行过程中是否抛出异常来判断用例是否执行成功
2、如果断言失败程序会抛出异常,框架就会把这个用例标记为失败
3、只要你的程序中执行出现了其他异常,框架也会去捕获异常并将用例标记为失败

八、异常捕获与异常抛出

1、try…except 捕获到的异常一定要抛出来给框架,否则框架就会认为用例执行成功的
2、手动抛异常:raise AssertionError(e)

 def test_03(self):
        try:
            time.sleep(1)
            self.assertEqual(1,2)
            print("测试用例03")
        except Exception as e:
            # print("错误原因:",e)
            raise AssertionError(e)

你可能感兴趣的:(python,测试工具)