unittest篇4-测试脚手架(TestFixture)详解

1、前言

上一篇博客一起学习了测试套件(TestSuite),怎么将TestCase加载到TestSuite中介绍了四种方法,大家一定要掌握通过用例所在的路径进行加载。

2、TestFixture

2.1 简介

我们可以把TestFixture看作夹心饼干外层的两片饼干,这两片饼干就是setUp/tearDown,中间的奶油就是测试用例。除此之外,unittest还提供了更大范围的Fixture,如测试类、测试模块的Fixture。

2.2 使用

2.2.1 用例级别-setUp/tearDown

  • 1、setUp : 测试用例开始前执行(以一条测试用例为单位)
  • 2、tearDown :测试用例结束时执行(以一条测试用例为单位)

使用

    # 测试用例开始前执行(以一条测试用例为单位)
    def setUp(self) -> None:
        print("test case start")

    # 测试用例结束时执行(以一条测试用例为单位)
    def tearDown(self) -> None:
        print("test case end")

2.2.2 类级别-setUpClass/tearDownClass

  • 1、setUpClass:测试用例类开始前执行
  • 2、tearDownClass:测试用例类结束时执行

使用

    # 测试用例类开始前执行
    @classmethod
    def setUpClass(cls) :
        print("test class start")

    # 测试用例类结束时执行
    @classmethod
    def tearDownClass(cls) :
        print("test class end ")

2.2.3 模块级别-setUpModule/tearDownModule

  • 1、setUpModule :整个模块开始前执行
  • 2、tearDownModule:整个模块结束时执行

使用

# 整个模块开始前执行
def setUpModule():
    print("test module start")
# 整个模块结束时执行
def tearDownModule():
    print("test module end")

3、实例

import unittest
# 整个模块开始前执行
def setUpModule():
    print("模块级别开始test module start")
# 整个模块结束时执行
def tearDownModule():
    print("模块级别结束test module end")

class MyTest(unittest.TestCase):

    # 测试用例类开始前执行
    @classmethod
    def setUpClass(cls) :
        print("类级别开始 test class start" )

    # 测试用例类结束时执行
    @classmethod
    def tearDownClass(cls) :
        print("类级别结束 test class end")

    # 测试用例开始前执行(以一条测试用例为单位)
    def setUp(self) -> None:
        print("用例级别开始 test case start")

    # 测试用例结束时执行(以一条测试用例为单位)
    def tearDown(self) -> None:
        print("用例级别结束 test case end")

    def test_case1(self):
        print("用例 test case1")

    def test_case2(self):
        print("用例 test case2")

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

4、输出结果

大家重点关注 执行的顺序,把顺序整清楚了,那么就明白测试脚手架是什么了!!
unittest篇4-测试脚手架(TestFixture)详解_第1张图片

5、总结

  • 1、setUpModule/tearDownModule:在整个模块的开始与结束时被执行。
  • 2、setUpClass/tearDownClass :在测试类的开始与结束时被执行。
  • 3、setUp/tearDown : 在测试用例的开始与结束被执行。

注意

  • 4、setUpClass/tearDownClass 为类方法,需要通过@classmethod 进行装饰,另外方法的参数为cls,cls和self没有本质上的区别,都只表示方法的第一个参数。
  • 5、使用场景,比如WEB自动化,浏览器初始化工作,可以使用。接口自动化需要登录的接口,然后拿到token等等令牌可以使用。
  • 6、六个条件都是非必要条件,如果没有可以使用pass 占位符即可。

ps :

1、后续内容继续深入unittest的学习;
2、有什么问题,欢迎大家评论区评论交流!谢谢大家!
3、如果觉得博主这篇博客对大家有用,麻烦评论区留下自己的‘脚印’ !

你可能感兴趣的:(unittest,unittest)