前言
https://blog.csdn.net/qq_36502272/article/details/100776789
-
定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要用test_开头,跟用例区分开。用例才是test_开头的命名。 -
fixture是可以有返回值的,如果没return默认返回None。用例调用fixture的返回值,直接就是把fixture的函数名称当成变量传入 -
fixture装饰器里的scope有四个级别的参数。“function(不写默认这个)”,“class”,“module”or“session” -
除scope之外。还有params、autouse、ids、name等。 -
fixture可以有返回值,如果没有return,默认会是None;用例调用fixture的返回值,就是直接把fixture的函数名称作为参数传入 -
fixture可以返回一个元组、列表或字典 -
test_用例可传单个、多个fixture参数 -
fixture与fixture间可相互调用
1、fixture可以返回一个元祖、列表、字典
代码示例:
import pytest
@pytest.fixture()
def postcode():
print("========打印装饰器函数=====")
user = 'admin'
pwd = '123'
return user, pwd
def test_01(postcode):
print(postcode)
assert postcode[0] == 'admin'
assert postcode[1] == '123'
if __name__ == '__main__':
pytest.main(['-sv', 'test_01.py'])
结果: 2、用例传多个fixture参数 代码示例:
import pytest
@pytest.fixture()
def user():
print("=======user装饰器函数===========")
user = 'root'
return user
@pytest.fixture()
def pwd():
print("========pwd装饰器函数=========")
pwd = '123456'
return pwd
def test_02(user, pwd):
print(user, pwd)
assert user == 'root'
assert pwd == '123456'
if __name__ == '__main__':
pytest.main(['-sv', 'test_02.py'])
结果:
|