pytest跟我练08-->fixtrue基础之conftest.py模块使用

本文详细解析pytest框架中的conftest.py文件作用与使用技巧,介绍其作为共享fixture配置文件的优势,以及在不同层级目录下如何正确设置与调用,适合pytest测试框架的初学者和进阶用户。

前言

正确的道路是这样:吸取你的前辈所做的一切,然后再往前走。——列夫·托尔斯泰
     建议大家多看贴,少走弯路~

一、conftest.py文件是什么

  • 单独存放fixtrue配置的一个文件
  • 用处是可以多个不同的pytest测试脚本共用一套fixture配置,代码维护方便

二、conftest.py文件编写的注意事项

  • conftest.py文件不能修改名称,否则pytest检测不到
  • conftest.py与运行的用例要在python同一个包下,不能是同一个目录下(ps:init.py)
  • conftest.py文件配置好后,pytest自动检测并生效,不需要进行import导入

三、conftest.py文件使用实例

3.1 来个简单的 conftest.py文件 使用练练手

代码层次路径如下截图:
代码如下:
conftest.py文件代码:

import pytest

@pytest.fixture(name='conftest')
def setUp():
    print('conftest:测试初始化')
    yield
    print('conftest:测试清理')

test_01.py文件代码:

def test01(conftest):
    print('execute Test01')
    assert 1

test_02.py文件代码:

import pytest

def test02(conftest):
    print('execute Test02')
    assert 1

if __name__ == '__main__':
    pytest.main(["-s"])
  • 上述实例要运行,只需要运行 test_02.py 文件即可,会自动检测 conftest.py 文件中的fixtrue
  • 通过上述实例,可以发现 test_01.py 和 test_02.py 都能引用到 conftest.py 文件中的fixtrue

3.2 再来一个多层次的

代码层次路径如下截图:
之前的代码不变,增加的部分代码如下:
test_package_01包下的conftest.py文件:

import pytest

@pytest.fixture(name='package_01_conftest')
def setUp():
    print('package_01_conftest:测试初始化')
    yield
    print('package_01_conftest:测试清理')

test_package_01包下的test_p_01.py文件:

#test01方法同时引用顶层、包下的的fixtrue
def test01(conftest,package_01_conftest): 
    print('execute test_p_01')
    assert 1

test_package_02包下的代码类似,不再重复罗列,占用篇幅~~

  • 上述实例要运行,只需要运行 test_02.py 文件即可,会自动检测到所有 conftest.py 文件中的fixtrue
  • 上例中包含了3个 conftest.py 文件,有顶层的,有测试包下的
  • 上例执行后查看结果会发现顶层的 conftest.py 文件先生效,然后再生效测试包下的
  • 在test01方法中引用了顶层和包下的的fixtrue,可以看出顶层的fixtrue对当面包以及子包下的测试方法都能生效
  • 注意:test_package_01包下的测试模块不能引用test_package_02包下 conftest.py 的fixture,因为它们没有上下的层级关系
  • 在实际使用 conftest.py 文件中,一般会把顶层的fixtrue的scope设置为session,存放整个项目需要使用的初始化操作或数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挨踢~小先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值