PlayWright(二十)- Pytest之conftest文件

2023-10-17 10:00:47 浏览数 (2)

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参数名

我们执行下结果看下:

0 人点赞