fixture参数如下
param scope:function(默认), class, module, session, package
function的作用域在每个测试用例都执行一次
class的作用域在每个类下只执行一次
module的作用域在每个py文件下只执行一次
session的作用域在整个测试工程只执行一次
package和seesion类似
# function
import pytest
@pytest.fixture(scope='function', autouse=True)
def begin():
print('执行 function')
def test_a():
print('执行 test_a')
# 结果如下
'''
执行 function
执行 test_a
'''
# class
import pytest
@pytest.fixture(scope='class', autouse=True)
def begin():
print('执行 class')
class TestCase:
def test_a():
print('执行 test_a')
def test_b():
print('执行 test_b')
# 结果如下
'''
执行 class
执行 test_a
执行 test_b
'''
# module
import pytest
@pytest.fixture(scope='module', autouse=True)
def begin():
print('执行 module')
class TestCaseA:
def test_a():
print('执行 test_a')
def test_b():
print('执行 test_b')
class TestCaseB:
def test_c():
print('执行 test_c')
def test_d():
print('执行 test_d')
# 结果如下
'''
执行 module
执行 test_a
执行 test_b
执行 test_c
执行 test_d
'''
# session
import pytest
@pytest.fixture(scope='session', autouse=True)
def begin():
print('执行 session')
a.py
class TestCaseA:
def test_a():
print('执行 test_a')
b.py
class TestCaseB:
def test_b():
print('执行 test_c')
# 结果如下
'''
执行 session
执行 test_a
执行 test_b
'''