• Pytest Fixture(二)


    作用域

    固件的作用是为了抽离出重复的工作和方便复用,为了更精细化控制固件(比如只想对数据库访问测试脚本使用自动连接关闭的固件),pytest 使用作用域来进行指定固件的使用范围。

    在定义固件时,通过 scope 参数声明作用域,可选项有:

    1.function: 函数级,每个测试函数都会执行一次固件;
    2.class: 类级别,每个测试类执行一次,所有方法都可以使用;
    3.module: 模块级,每个模块执行一次,模块内函数和方法都可使用;
    4.session: 会话级,一次测试只执行一次,所有被找到的函数和方法都可用。
    

     

    默认的作用域为 function。 

    import pytest
    
    @pytest.fixture(scope='function')
    def func_scope():
       print('方法级别')
    
    @pytest.fixture(scope='module')
    def mod_scope():
        print('模块级别')
    
    
    @pytest.fixture(scope='session')
    def sess_scope():
        print('会话级别')
    
    
    @pytest.fixture(scope='class')
    def class_scope():
        print('类级别')
    
    
    def test_multi_scope(sess_scope, mod_scope, func_scope):
        pass
    

    执行结果如下,可以清楚看到各固件的作用域和执行顺序:

     对于类使用作用域,需要使用 pytest.mark.usefixtures (对函数和方法也适用)

    import pytest
    
    
    @pytest.fixture(scope='class')
    def class_scope():
        print('类级别前置')
        yield
        print('类级别后置')
    
    
    @pytest.mark.usefixtures('class_scope')
    class TestClassScope:
        def test_1(self):
            print("test_1方法")
    
        def test_2(self):
            print("test_2方法")
    

    自动执行

    目前为止,所有固件的使用都是手动指定,或者作为参数,或者使用 usefixtures。

    如果我们想让固件自动执行,可以在定义时指定 autouse 参数。

    下面是两个自动计时固件,一个用于统计每个函数运行时间(function 作用域),一个用于计算测试总耗时(session 作用域)

    注意下面的测试函数并都没有使用固件:

    import pytest
    
    
    @pytest.fixture(scope='session', autouse=True)
    def timer_session_scope():
        print("用例执行前")
        yield
        print("用例执行后")
    
    
    def test_one():
        print('test_one方法')
    

    结果如下

    我们可以看到,我们选择自动执行,即使我们没有选择使用,pytest也会给自动执行的。执行到对应的function级别。

  • 相关阅读:
    Asp.net C# 图像处理
    java报表工具参数强化
    Aspose.Pdf for .NET控件PDF文档到Excel、EPS、SVG等的转换
    使用Solid Converter PDF控件把PDF转换至Word文档
    报表控件报表设计器工具QuickReport下载
    图形图像处理CAD控件Vectordraw Developer Framework下载
    Aspose.Words控件支持DOC,OOXML,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式
    自动验证编码值的条形码控件Barcode Professional SDK for .NET
    MVC技术的功能强大的报表创建和设计控件
    XML Barcode Webservice条形码控件介绍
  • 原文地址:https://www.cnblogs.com/pywen/p/16078046.html
Copyright © 2020-2023  润新知