【pytest-fixture】十三、conftest.py跨多个文件/文件夹共享fixture

我基本上是跟着官网去学习fixture,自己先看并学了一遍,为了方便后续查看和记忆,所以将学习笔记记录下来,如果有不对的地方,欢迎大家评论区指出。

1.介绍

conftest.py文件用作为整个目录提供fixture的一种方式.conftest.py定义的fixture函数可以在改包中的任何测试使用,而无需导入它们(pytest会自动发现它们)
你可以新建多层目录,并且每个目录都可以拥有自己的conftest.py文件,子目录的conftest.py可以覆盖父目录的conftest.py的fixture(只针对同名的,可以理解为两个文件进行并集)

2.示例代码

文件结构:
tests/
  conftest.py

import pytest


@pytest.fixture
def login():
    print("登陆")
    yield
    print("退出登录")


@pytest.fixture
def token():
    print("获取token")
    yield 'token'
    print("删除token")

  test_demo.py

def test_demo(login):
	print("测试用例")

  subdirectory/
    conftest.py

import pytest


@pytest.fixture
def open_chrome():
    print("打开浏览器")
    yield
    print("关闭浏览器登录")


@pytest.fixture
def login():
    print("覆盖后的登陆")
    yield
    print("覆盖后的退出登录")

    test_demo.py

def test_demo01(login):
    print("测试用例01")


def test_demo02(open_chrome):
    print("测试用例02")


def test_demo03(token):
    print("测试用例03")

3.运行结果

在这里插入图片描述

4.分析结果

我挨个来举例说明conftest.py的功能
1.test_demo.py中可以看出,我们没有引入conftest.py中的fixture::login,但我们仍然能够使用,这就是conftest.py的功能之一
2.subdirectory/test_demo.py::test_demo01,我们可以看到subdirectory/conftest.py::login覆盖了conftest.py::login,这就是conftest.py的另一个功能,子集目录的conftest.py可以覆盖父级目录conftest.py定义的fixture
3.subdirectory/test_demo.py::test_demo02,这里访问的fixture就是我们subdirectory/conftest.py::open_chrome定义的fixture,说明conftest.py支持各个目录拥有自己的conftest.py
4.subdirectory/test_demo.py::test_demo03,这里访问的fxiture就是我们conftest.py::token,可以看出我们的测试函数支持向上查找fixture,如果当前没有就去父目录查找,如果父目录没有就是爷爷的目录上查找,依次查找

注意:
  1.conftest.py这个文件名称是不能修改的,如果修改是没办法识别里面的fixture的.
  2.测试函数只能向上查找而不能向下查找,如上例子中的test_demo.py无法访问subdirectory/conftest.py中的fixture.
  3.测试函数向上查找fixture也只能找直系亲属,比如子找父找爷爷...,但不能子找父亲的兄弟的conftest.py定义的fixture

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值