scope分为session、package、module、class、function级别,其中function也是包含测试类的测试方法的,package指在当前contest.py的package下只执行一次,如果想在某个package执行前后做操作,可以在那个package里加contest.py。yield就相当于执行测试函数的位置,详细解释如下: 1.首先新建conftest.py
import pytest
@pytest.fixture(scope='session', autouse=True)
def realize_session():
print('session之前')
yield
print('session之后')
@pytest.fixture(scope='package', autouse=True)
def realize_package():
print('package之前')
yield
print('package之后')
@pytest.fixture(scope='module', autouse=True)
def realize_module():
print('module之前')
yield
print('module之后')
@pytest.fixture(scope='class', autouse=True)
def realize_class():
print('class之前')
yield
print('class之后')
@pytest.fixture(scope='function', autouse=True)
def realize_function():
print('function之前')
yield
print('function之后')
@pytest.fixture(scope='function', name='aa')
def realize_auto_flase():
print('autouse=false-function之前')
yield
print('autouse=false-function之后')
2.然后新建测试文件
import pytest
class Test_pytest_class():
def test_buy_now(self):
print('test_buy_now')
def test_buy_now2(self):
print('test_buy_now2')
def test_add_cart(self):
print('test_add_cart')
@pytest.mark.usefixtures('aa')
def test_learn(self):
print('装饰器方式调用fixtures函数')
def test_learn2(self,aa):
print('传参方式调用fixtures函数')
3.接下来看执行结果
test_pytest_class.py::Test_pytest_class::test_buy_now session之前
package之前
module之前
class之前
function之前
PASSED [ 20%]test_buy_now
function之后
test_pytest_class.py::Test_pytest_class::test_buy_now2 function之前
PASSED [ 40%]test_buy_now2
function之后
test_pytest_class.py::Test_pytest_class::test_add_cart function之前
PASSED [ 60%]test_add_cart
function之后
test_pytest_class.py::Test_pytest_class::test_learn function之前
autouse=false-function之前
PASSED [ 80%]装饰器方式调用fixtures函数
autouse=false-function之后
function之后
test_pytest_class.py::Test_pytest_class::test_learn2 function之前
autouse=false-function之前
PASSED [100%]传参方式调用fixtures函数
autouse=false-function之后
function之后
class之后
module之后
package之后
session之后
|