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 编写如下图代码,并按照操作:

![](https://img2020.cnblogs.com/blog/380431/202003/380431-20200316215325495-538117319.jpg)

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

![](https://img2020.cnblogs.com/blog/380431/202003/380431-20200316215618244-779488914.png)

三、scope参数简单使用

  • 3.1 scope="function" 举例

importpytest

@pytest.fixture(scope='function') # function级别每个函数都会执行一次

def setUp():

    print('\nsetUp')

    yield

    print('\ntearDown')

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 -- Python3.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

collected2items

test_demo_03.py 

setUp 

exectue testcase01 

tearDown 

setUp 

exectue testcase02 

tearDown

 ==============================2passedin0.02s ===============================

  • 3.2 scope="module" 举例

import pytest

@pytest.fixture(scope='module') # module级别每个模块都会执行一次

def setUp():

    print('\nsetUp')

    yield

    print('\ntearDown')

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 -- Python3.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

collected2items

test_demo_03.py

setUp 

exectue testcase01 

.exectue testcase02 

.

tearDown

==============================2passedin0.02s ===============================

上述两个实例小结:

  • scope="function" 在每个函数开始执行测试方法之前执行一次,每个测试方法部执行完之后再执行一次 (共2次输出setUp、tearDown)
  • scope="module" 只会在模块开始执行测试方法之前执行一次,测试方法全部执行完之后执行一次(共1次输出setUp、tearDown)
  • "class"和"package/session"与上述用法原理一样,不再重复举例,伤大家眼睛

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值