引言:pytest框架用于传递参数的方法是在需要返回参数的方法上面添加一个装饰器@pytest.fixture()
目录
关联+一个参数的传递
在想要返回参数的方法上面添加装饰器@pytest.fixture(),同时第二个方法接收参数,但是要注意方法中传递的参数要写第一个方法的方法名。
# 利用fixture固件技术进行参数传递
class Test_Class6():
@pytest.fixture()
def test_case1(self):
uname = "user1"
return uname
def test_case2(self, test_case1):
b = test_case1
print(b)
关联+多个参数的传递
当想要传递多个参数的时候,可以将参数放在列表中传递。
class Test_Class7():
@pytest.fixture()
def test_case1(self):
uname = ["user1", "user2"]
return uname
def test_case2(self, test_case1):
b = test_case1
print(b)
关联+函数的传递
新定义的函数的返回值同样也可以传递,一样是在函数上面添加装饰器@pytest.fixture()
import random
class Test_Class7():
@pytest.fixture()
def random_number(self):
num = random.randint(1, 10)
return num
def test_case2(self, random_number):
b = random_number
print(b)
conftest.py 文件的使用
大批量的脚本需要使用相同的测试数据,可以在项目根目录下创建conftest.py文件
- conftest.py配置脚本名称是固定的,不能改名称
- conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件
- 放到项目的根目录下就可以全局调用了,如果放到某个package下,那就在改package内有效
import pytest
@pytest.fixture(scope='session')
def test_data():
datalist = [1, 2, 3, 4, 5]
return datalist
scope参数详解
fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function
如果不写scope参数,那默认就是function。
- function:每一个函数或方法都会调用,每个测试用例执行前都会执行一次function级别的fixture
- class:每一个类调用一次,一个类中可以有多个方法。只在class里所有用例开始前执行一次。
- module:每一个.py文件调用一次,该文件内又有多个function和class。在当前.py脚本里面所有用例开始前只执行一次
- session:是多个文件调用一次,可以跨.py文件调用。有多个.py文件调用时,实际只调用了一次fixture