@pytest.fixture() …像这些的方法,该怎么样去理解?以下的这段代码中:
class TestLogin:
@pytest.mark.usefixtures(‘login’)
def test_case1(self,login):
print(login)
print(“testcae1”)
只知道理解那是类和方法,就‘@pytest.mark.usefixtures(‘login’)’像这些方法不知道怎么去引用,调用到?感觉自己的理解方式不对,请指教!
这是pytest的装饰器功能呀,usefixtures是引用fixture标签标注的方法,具体可以了解pytest部分
@pytest.fixture()装饰器用于声明函数是一个fixture。如果测试函数的参数列表中包含fixture名,那么pytest会检测到,并在测试函数运行之前执行fixture。
1、使用fixture传递测试数据
2、指定fixture作用范围
3、使用usefixtures指定fixture
4、fixture的参数化
@pytest.fixrture 用来标记fixture对象,通常用于完成预置处理,清理和重复操作。
- 详细的参数及参数值参考官网,官网中也有很多例子
- conftest.py 共享夹具功能也非常有用
- 以下只举几个常用的例子
@pytest.fixture(scope="function", params=[1, 2, 3])
def fixture_name(request):
# todo 测试准备工作
yield request.param # 获取参数化中的一个值
# todo 测试清理工作
使用方式1:通过将fixture对象的名称做为输入参数
def test_ex(fixture_name):
# fixture_name 的值是yield中返回的值,若yield不返回,则为空,
assert fixture_name == 1
使用方式2:夹具中使用夹具
@pytest.fixture(scope="function")
def fixture_name2(fixture_name): # 把夹具对象名称作为另一个夹具对象的输入参数
# todo 测试准备工作
yield fixture_name
# todo 测试清理工作
使用方式3:pytest.mark.usefixtures(),与方式1相比,这种方式不能使用夹具的返回值
使用场景:测试函数不需要直接访问fixture对象
# 每个测试case都会执行fixture_name
@pytest.mark.usefixtures("fixture_name")
class Test_Ex:
def test_a(self):
assert 1==1
def test_b(self):
pass
谢谢大家,有点明白了!