fixture的作用范围(scope)
fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function
-function:每一个函数或方法都会调用
-class:每一个类调用一次,一个类中可以有多个方法
-module:每一个.py文件调用一次,该文件内又有多个function和class
-session:是多个文件调用一次,可以跨.py文件调用,每个.py文件就是module
import pytest
@pytest.fixture(scope="function")
def my_fixture():
print("这是前置的方法,可以实现部分以及全部用例的前后置")
yield
print("这是后置的方法,可以实现部分以及全部用例的前后置")
class TestLogin:
def test_login_01(self):
print("\n测试01号登录成功")
def test_login_02(self,my_fixture):
print("\n测试02号登录成功")
def test_login_03(self):
print("\n测试03号登录成功")
def test_login_04(self):
print("\n测试04号登录成功")
def test_login_05(self):
print("\n测试05号登录成功")
参数传递:
import pytest
@pytest.fixture(scope="function",params=['张三','李四','王五'])
def my_fixture(request):
print("这是前置的方法,可以实现部分以及全部用例的前后置")
yield request.param
print("这是后置的方法,可以实现部分以及全部用例的前后置")
class TestLogin:
def test_login_01(self):
print("\n测试01号登录成功")
def test_login_02(self,my_fixture):
print("\n测试02号登录成功",str(my_fixture))
print('------------------\n'+str(my_fixture))
def test_login_03(self):
print("\n测试03号登录成功")
def test_login_04(self):
print("\n测试04号登录成功")
def test_login_05(self):
print("\n测试05号登录成功")
@pytest.fixture(scope=“function”,params=[‘张三’,‘李四’,‘王五’]),是参数名,有s yield request.param,是属性名,没有s 固定写法。
return和yield的区别 1、return和yield都表示返回的意思,但return的后面不能有代码,返回值之后不再执行后续的代码; 2、yield返回后,可以接代码,会继续执行。
|