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"与上述用法原理一样,不再重复举例,伤大家眼睛
  • 相关阅读:
    前端下载远程文件
    Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause().
    前端内存泄漏检查判断及处理
    在vue中使用import()来代替require.ensure()实现代码打包分离
    微信小程序将view动态填满全屏
    H5背景音乐自动播放(兼容微信IOS,进程后台切换自动停止播放,本文例子为Vue写法)
    JS获取移动端系统信息(操作系统、操作系统版本、横竖屏状态、设备类型、网络状态、生成浏览器指纹)
    JS判断图片是否加载完毕
    JS深度合并对象
    jsonp跨域请求
  • 原文地址:https://www.cnblogs.com/boosli/p/14810279.html
Copyright © 2011-2022 走看看