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" 举例
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"与上述用法原理一样,不再重复举例,伤大家眼睛
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了