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"与上述用法原理一样,不再重复举例,伤大家眼睛
  • 相关阅读:
    17款最佳的代码审查工具
    最全的开发人员在线速查手册
    Expression Blend 4 激活码
    TimeSpan XML序列化
    如何使用策略模式
    .Net 笔记(二) 泛型和集合
    VS2010 旗舰版序列号
    WPF ArrangeOverride与MeasureOverride
    实现zbar扫描二维码的时候就把照片存储出来的办法
    用Jpush极光推送实现抓取特定某个用户Log到七牛云服务器
  • 原文地址:https://www.cnblogs.com/boosli/p/14810279.html
Copyright © 2011-2022 走看看