searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Pytest测试前置和后置的实现

2024-06-25 09:47:38
5
0

 

在 pytest 中,fixtures(也称为 fixturessetup/teardown 函数或 hooks)支持多种级别。

1,模块级别:pytest中,setup_module() 是一个模块级别的 setup 函数,不定义在类内部。一般定义在模块的顶部,这个函数的目的是在整个模块中的所有测试函数执行之前,只执行一次 setup 操作。teardown_module()是一个模块级别的 teardown函数,这个函数的目的是在整个模块中的所有测试函数执行之后,只执行一次 teardown操作。

2,类级别 :在每个测试类中的所有测试方法执行之前和之后执行。在pytest中,通常使用@pytest.fixture(scope="class") 和 @pytest.mark.usefixtures(fixturename, scope="class")来实现类级别的 fixture。pytest没有提供类似于unittest setup_class和teardown_class的函数。

3,函数/方法级别 (setup()teardown(), setup_method(), teardown_method()):在每个测试函数/方法之前和之后执行。setup_mothod()和teardown_method可以定义在类中,并可以随类继承。

注意:pytest本身并不是类,是一种函数,因此它们并不直接支持类的继承。

例子:在一个Python文件test.py中有如下代码:

def setup_module(self):
    print("setup_module")

class TestTask(TestFixture):
    """
    """
    
    def setup_method(self):
        super().setup_method()
        print("setup_method")
        
    def test_task(self):
        print("execute testcase test_task") 
        
    def teardown_method(self):
        super().teardown_method()
        print("teardown_method")
        logger.info("teardown_method") 
        
def teardown_module(self):
    print("in the case, teardown_module")

 

运行 pytest  -s .\testcase\function\training\test.py

运行过程:

testcase\function\training\test_training.py setup_module
[2024-06-24 19:50:21,421] training_set.py - INFO - 9 - trainning_set setup_method
setup_method
execute testcase test_training_task
.[2024-06-24 19:50:21,423] training_set.py - INFO - 12 - trainning_set teardown_method
teardown_method
in the case, teardown_module

0条评论
0 / 1000
李****祥
4文章数
0粉丝数
李****祥
4 文章 | 0 粉丝
原创

Pytest测试前置和后置的实现

2024-06-25 09:47:38
5
0

 

在 pytest 中,fixtures(也称为 fixturessetup/teardown 函数或 hooks)支持多种级别。

1,模块级别:pytest中,setup_module() 是一个模块级别的 setup 函数,不定义在类内部。一般定义在模块的顶部,这个函数的目的是在整个模块中的所有测试函数执行之前,只执行一次 setup 操作。teardown_module()是一个模块级别的 teardown函数,这个函数的目的是在整个模块中的所有测试函数执行之后,只执行一次 teardown操作。

2,类级别 :在每个测试类中的所有测试方法执行之前和之后执行。在pytest中,通常使用@pytest.fixture(scope="class") 和 @pytest.mark.usefixtures(fixturename, scope="class")来实现类级别的 fixture。pytest没有提供类似于unittest setup_class和teardown_class的函数。

3,函数/方法级别 (setup()teardown(), setup_method(), teardown_method()):在每个测试函数/方法之前和之后执行。setup_mothod()和teardown_method可以定义在类中,并可以随类继承。

注意:pytest本身并不是类,是一种函数,因此它们并不直接支持类的继承。

例子:在一个Python文件test.py中有如下代码:

def setup_module(self):
    print("setup_module")

class TestTask(TestFixture):
    """
    """
    
    def setup_method(self):
        super().setup_method()
        print("setup_method")
        
    def test_task(self):
        print("execute testcase test_task") 
        
    def teardown_method(self):
        super().teardown_method()
        print("teardown_method")
        logger.info("teardown_method") 
        
def teardown_module(self):
    print("in the case, teardown_module")

 

运行 pytest  -s .\testcase\function\training\test.py

运行过程:

testcase\function\training\test_training.py setup_module
[2024-06-24 19:50:21,421] training_set.py - INFO - 9 - trainning_set setup_method
setup_method
execute testcase test_training_task
.[2024-06-24 19:50:21,423] training_set.py - INFO - 12 - trainning_set teardown_method
teardown_method
in the case, teardown_module

文章来自个人专栏
测试自动化
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0