fixture是什么?
先看AI给出的解释:
在pytest中,fixture是一种用于管理测试用例执行过程中共享资源的工具。通过fixture,可以在测试用例执行前后进行一些初始化和清理操作,以确保测试用例能够在一个可控的环境中运行。fixture可以用来模拟测试环境、准备测试数据、管理依赖关系等。
通过在测试用例函数参数中使用装饰器
@pytest.fixture
来定义fixture,并将其传递给需要使用该fixture的测试用例函数。pytest将会在执行测试用例前自动调用fixture函数,并将其返回值传递给测试用例函数。fixture函数可以返回各种类型的值,如数据、对象、函数等。fixture的作用范围可以是整个测试模块、整个测试会话或者只作用于某个具体的测试用例函数。fixture还支持参数化,可以根据需要动态地生成不同的fixture实例。
其实,可以简单地理解fixture就是一个加了 @pytest.fixture装饰器的函数,需要有函数名、可以传递入参,执行完成可以返回各种类型的值或对象、他们也可以被其他的fixture调用。
而@pytest.fixture这个装饰器的作用就在于,指定当前这个函数的作用域,也就是它每次被调用时都会被执行,还是会自行判断是否需要执行。
另外,与函数的不同在于,它被调用(使用)时是作为参数传递给调用者的,而不是像普通函数那样被调用。
它函数的本质
1、函数
1)这里定义了一个名为fixture1_function的函数,入参为base_url,函数体内实现的功能为打印base_url(base_url为pytest.ini通过addopts传入的一个参数,这里没有实际意义,仅为了做入参)
2)写了一个测试用例,test_fixtures1,并在里面调用fixture1_function
def fixture1_function(base_url):
print("\n这是一个普通函数,入参为base_url=" + base_url)
def test_fixtures1(base_url):
fixture1_function(base_url)
print("这是test1")
执行结果:
先执行被调用的函数,在执行测试用例中的后续步骤。