scope


# scope

# scope 是什么

  • fixture 的一个参数
  • 控制 fixture 的作用范围
  • 有以下可选值:
    • function:默认,每个函数或方法都会调用
    • class:每个类会调用,一个类可以有多个方法
    • module:每一个 .py 文件调用一次,该文件内又有多个 function 和 class
    • package/session:多个文件调用一次,可以跨 .py 文件

# scope 作用范围顺序

先来看个例子

import pytest

@pytest.fixture(scope="function")
def login():
    print("先进行登录")

def test_001(login):
    print("执行用例001")

@pytest.fixture(scope="class")
def login1():
    print("先进行登录111")

@pytest.mark.usefixtures("login3","login2","login4","login1","login")
class Test_Case():
    def test_002(self):
        print("执行用例002")

    def test_003(self):
        print("执行用例003")

@pytest.fixture(scope="session")
def login2():
    print("先进行登录222")

@pytest.fixture(scope="package")
def login3():
    print("先进行登录333")

@pytest.fixture(scope="module")
def login4():
    print("先进行登录444")

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

执行结果:

pytest

总结

  • 作用范围顺序:session > package > module > class > function
  • session/package、module 级别的 fixture 只执行了一次
  • session/package 可以结合 conftest.py 文件使用

相关 conftest.py 可参考 conftest.py

(完)