zoukankan      html  css  js  c++  java
  • pytest-学习fixtrue基础scope参数

    一、scope参数是什么?

    • scope参数是fixture方法中的其中一个参数;
    • scope参数用来设置fixture的应用范围,设置后,会根据设置的范围去触发执行;
    • scope参数有4个可选值:function(默认)、class、module、package/session

    function:每个方法(函数)都会执行一次;
    class:每个类都会执行一次。类中有多个方法调用,只在第一个方法调用时执行;
    module:一个 .py 文件执行一次。一个.py 文件可能包含多个类和方法;
    package/session:多个文件调用一次,可以跨 .py 文件。注意使用时单独写package或session

    二、scope参数出处(会的忽略该步)

    • 2.1 编写如下图代码,并按照操作:

    • 2.2 跳转到fixture方法的位置时,就可以看到scope参数了,它有默认值function,英文好的朋友可以继续看下面的注释

    三、scope参数简单使用

    • 3.1 scope="function" 举例
    import pytest
    
    @pytest.fixture(scope='function') # function级别每个函数都会执行一次
    def setUp():
        print('
    setUp')
        yield
        print('
    tearDown')
    
    def testcase01(setUp):
        print('exectue testcase01')
        assert 1
    def testcase02(setUp):
        print('exectue testcase02')
        assert 1
    
    if __name__=='__main__':
        pytest.main(["-s"])
    

    以上代码执行结果:

    /usr/local/bin/python3.8 /Users/lanyin/PycharmProjects/newdream/pytest_demo/test_demo_03.py
    ============================= test session starts ==============================
    platform darwin -- Python 3.8.2, pytest-5.4.0, py-1.8.1, pluggy-0.13.1
    rootdir: /Users/liuqingjun/PycharmProjects/newdream/pytest_demo
    plugins: ordering-0.6, html-2.1.0, allure-pytest-2.8.11, metadata-1.8.0
    collected 2 items
    
    test_demo_03.py 
    setUp
    exectue testcase01
    .
    tearDown
    
    setUp
    exectue testcase02
    .
    tearDown
    
    ============================== 2 passed in 0.02s ===============================
    
    • 3.2 scope="module" 举例
    import pytest
    
    @pytest.fixture(scope='module') # module级别每个模块都会执行一次
    def setUp():
        print('
    setUp')
        yield
        print('
    tearDown')
    
    def testcase01(setUp):
        print('exectue testcase01')
        assert 1
    def testcase02(setUp):
        print('exectue testcase02')
        assert 1
    
    if __name__=='__main__':
        pytest.main(["-s"])
    

    以上代码执行结果:

    /usr/local/bin/python3.8 /Users/lanyin/PycharmProjects/newdream/pytest_demo/test_demo_03.py
    ============================= test session starts ==============================
    platform darwin -- Python 3.8.2, pytest-5.4.0, py-1.8.1, pluggy-0.13.1
    rootdir: /Users/liuqingjun/PycharmProjects/newdream/pytest_demo
    plugins: ordering-0.6, html-2.1.0, allure-pytest-2.8.11, metadata-1.8.0
    collected 2 items
    
    test_demo_03.py 
    setUp
    exectue testcase01
    .exectue testcase02
    .
    tearDown
    
    ============================== 2 passed in 0.02s ===============================
    

    上述两个实例小结:

    • scope="function" 在每个函数开始执行测试方法之前执行一次,每个测试方法部执行完之后再执行一次 (共2次输出setUp、tearDown)
    • scope="module" 只会在模块开始执行测试方法之前执行一次,测试方法全部执行完之后执行一次(共1次输出setUp、tearDown)
    • "class"和"package/session"与上述用法原理一样,不再重复举例,伤大家眼睛
  • 相关阅读:
    AWS IoT Greengrass:配置安装 AWS CLI
    AWS IoT Greengrass:如何使用 AWS 管理控制台配置本地资源访问
    AWS IoT Greengrass 入门-模块6: 访问其他 AWS 服务
    AWS IoT Greengrass 入门-模块5:与设备影子交互
    AWS IoT Greengrass 入门-模块4:在 AWS IoT Greengrass 组中与设备交互
    AWS IoT Greengrass 入门-模块3(第 2 部分):AWS IoT Greengrass 上的 Lambda 函数
    Nginx 启动报错 (nginx: error while loading shared libraries: XXX: cannot open shared object file: No such file or directory ) 的解决办法
    自己制作一个简单的操作系统二[CherryOS]
    Linux-误删apt-get以及把aptitude换回
    完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存
  • 原文地址:https://www.cnblogs.com/boosli/p/14810279.html
Copyright © 2011-2022 走看看