python之Unittest框架介绍

一、Unittest框架介绍

unittest是python自带的一个单元测试框架,不仅适用于单元测试,还可以用于web、appium、接口自动化测试用例的开发与执行。Unittest提供了许多用于编写测试用例的工具和功能,使得测试代码的编写和执行变得简单直接。

二、Unittest框架要素

Unittest中最核心的四个概念是:

  • TestCase:测试用例
  • TestSuite:测试套件
  • TestRunner:用来执行测试用例和测试套件,并返回测试用例的执行结果
  • TestFixure:测试夹具(测试固件),代表执行一个或者多个测试所需的环境准备,以及关联的清理动作

备注:TestLoader:批量执行测试用例

* 一个testcase实例就是一个测试用例
//什么是测试用例?
--就是一个完整的测试流程,包括测试前环境的搭建(setup),执行测试代码(run),测试后环境的还原(teardown)。

* 而多个测试用例集合在一起,就是testsuite,testsuite可以嵌套testsuite。

* testloader是用来加载testcase到testsuite中

* testrunner是执行测试用例,测试结果保存在testrunner实例中,包括运行了多少测试用例,成功了多少,失败了多少,跳过了多少等。

* testfixture是测试夹具,是对一个测试用例环境的搭建和销毁,如setup、teardown

三、Unittest使用

3.1 TestCase

我们在写测试用例时,会继承unittest的TestCase的类和方法。一个TestCase就是一个测试用例,unittest中的测试用例都是以test开头,执行顺序是按照方法名的ASCLL值进行排序。

# 导入unittest模块
import unittest

class TestDemo(unittest.TestCase):
    def test_01(self):
        print("test case 01")
        self.assertEqual('test'.upper(),"TEST")
    
    def test_02(self):
        print("test case 02")
        self.assertTrue("test".upper())

if __name__ == "__main__":
    # 执行用例
    unittest.main() 

说明

  • 每个测试用例的结果标识,成功是. ,失败是F,出错是E,跳过是S
  • 执行的顺序,跟方法的顺序没有关系
  • 每个用例都是test开头,否则不被识别

3.2 TestSuite

我们可以把多个测试用例集合在一起运行,就产生了TestSuite测试套件。

import unittest

#...省略
suite = unittest.TestSuite() # 实例化一个对象suite

# 添加测试用例
suite.addTest(TestDemo("test_01"))
suite.addTest(TestDemo("test_02"))

备注:TestSuite需要配合TestRunner才会被执行

3.3 TestRunner

TestRunner测试运行器,用于执行测试用例的组件,自动运行测试用例并生成测试结果报告。负责加载测试用例,执行测试用例,并提供测试报告输出。

unittest提供了多种测试运行器,如:TextTestRunner、HTMLTestRunner、XMLTestRunner等,可以根据不同的需求选择不同的运行器。

import unittest

#...省略
suite = unittest.TestSuite() # 实例化一个对象suite

# 添加测试用例
suite.addTest(TestDemo("test_01"))
suite.addTest(TestDemo("test_02"))

# 实例化运行器
runner = unittest.TextTestRunner()

# 运行测试套件
runner.run(suite)

四、TestFixure

TestFixure测试夹具,是一个用于设置和清理测试环境的方法。允许在每个测试方法前后运行特定的代码。例如:初始化测试所需的对象或数据,并在测试完成后对这些对象数据进行清理。

4.1 setUp()和tearDown()方法

这两个方法分别在每个测试方法之前和之后运行。

import unittest

class TestDemo(unittest.TestCase):
    def setUp(self):
        # 在这里初始化你的测试环境,例如创建对象或加载数据
        print("setUp: 准备测试环境")
        self.test_data = [1, 2, 3]

    def tearDown(self):
        # 在这里清理你的测试环境
        print("tearDown: 清理测试环境")
        del self.test_data
        
    def test_01(self):
        print("test case 01")
        self.assertEqual('test'.upper(),"TEST")
    
    def test_02(self):
        print("test case 02")
        self.assertTrue("test".upper())

if __name__ == "__main__":
    unittest.main()

4.2 setUpClass()和tearDownClass()方法

setUpClass()和tearDownClass()是类级别的fixture,就是在所有测试方法之前和之后运行一次的代码,例如:数据库连接。

import unittest

class TestDemo(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("setUpClass: 准备测试环境")
        cls.class_data = [1, 2, 3]
 
    @classmethod
    def tearDownClass(cls):
        print("tearDownClass: 清理测试环境")
        del cls.class_data

    def test_01(self):
        print("test case 01")
        self.assertEqual('test'.upper(),"TEST")
    
    def test_02(self):
        print("test case 02")
        self.assertTrue("test".upper())

if __name__ == "__main__":
    unittest.main()

备注

  • 使用setUp()和tearDown()使用于每个测试方法的独立设置和清理
  • setUpClass()和tearDownClass()适用于类的所有测试方法的共享设置和清理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值