PlayWright(二十)- Pytest之conftest文件

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文件代码:
import pytests
@pytest.fixture(scope='class')
def set():
    print("用例前的登录操作")

 

 

test_01.py文件代码:
class Test_Demo1():

    def test_01(self, set):
        print('用例-搜索功能执行')

    def test_02(self, set):
        print('用例-输入功能执行')

 

 
test_02.py文件代码:
class Test_Demo1():

    def test_01(self, set):
        print('用例-购买功能执行')

 

 
这里在做实战的时候,作者犯了两个错误:
第一个没有__init__文件
第二个是没有在用例函数中引入fixture参数名
 
我们执行下结果看下:
 
posted @ 2023-07-19 16:13  似小陈ya  阅读(445)  评论(0编辑  收藏  举报