1、介绍与使用场景
conftest.py 这个是什么呢?
顾名思义,他就是一个文件,那这个文件是干什么用的呢?
在我们上文中,用了fixture函数是直接在用例的文件里定义的,那不能我们所有的用例想用到fixture都一个个定义吧,所以Pytest提供了一个conftest.py文件,这样呢,就可以把我们的fixture函数存放到这里
有人会问,我们用这个,具体可以干啥呢?
举个例子,我们做ui自动化,首先第一步会登录获取token,然后接着其他操作,在其他操作前都有登录这个功能,所以其他操作就是一个个用例函数,而登录获取token就可以前置,然后使用fixture函数,那这个函数就可以用到conftest.py文件
当然,既然是别人封装好的功能,那肯定有对应的规则,conftest.py文件也有他的规则
- conftest.py文件名字是固定的,不可以做任何修改
- conftest.py文件和用例文件在同一个目录下,那么conftest.py作用于整个目录
- conftest.py文件所在目录必须存在__init__.py文件
- conftest.py文件不能被其他文件导入
- 所有同目录测试文件运行前都会执行conftest.py文件
还要补充两点:
1、不同目录可以有自己的conftest.py,一个项目中可以有多个conftest.py
2、pytest会自动查找项目中的conftest.py文件,逐层往上查找
2、实战环节
我们还是直接看实战吧
首先创建目录:
conftest.py文件代码:
代码语言:javascript复制import pytests
@pytest.fixture(scope='class')
def set():
print("用例前的登录操作")
test_01.py文件代码:
代码语言:javascript复制class Test_Demo1():
def test_01(self, set):
print('用例-搜索功能执行')
def test_02(self, set):
print('用例-输入功能执行')
test_02.py文件代码:
代码语言:javascript复制class Test_Demo1():
def test_01(self, set):
print('用例-购买功能执行')
这里在做实战的时候,作者犯了两个错误:
第一个没有__init__文件
第二个是没有在用例函数中引入fixture参数名
我们执行下结果看下: