接口自动化进阶: Pytest之Fixture拓展及conftest.py加载机制

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


在 Pytest 中,Fixture 和 conftest.py 是实现测试数据共享和配置管理的核心机制。以下将详细介绍它们的使用方法和加载机制。

1. Fixture 的使用与拓展

1.1 Fixture 的基本概念

Fixture 是 Pytest 中的一个装饰器,用于提供测试所需的数据和对象。它可以在测试用例执行前后执行初始化和清理工作。

1.2 Fixture 的作用范围

Fixture 的作用范围由 scope 参数决定,常见的作用范围包括:

function:每个测试函数执行前运行一次。

class:每个测试类执行前运行一次。

module:每个测试模块执行前运行一次。

session:所有测试执行前运行一次。

1.3 Fixture 的参数化

Fixture 可以通过 params 参数实现参数化,支持向测试用例传递不同的数据。

import pytest

@pytest.fixture(params=[1, 2, 3])

def number(request):

    return request.param

def test_numbers(number):

    assert number > 0

1.4 Fixture 的自动应用

通过设置 autouse=True,Fixture 会自动应用于所有测试用例,无需手动声明。

@pytest.fixture(autouse=True)

def setup():

    print("Setup before each test")‍

2. conftest.py 的加载机制

2.1 conftest.py 的作用

conftest.py 是 Pytest 的一个特殊文件,用于定义全局的测试配置和共享 Fixture。它会被 Pytest 自动加载,无需显式导入。

2.2 加载机制

conftest.py 的加载顺序如下:

当前测试目录及其子目录。

conftest.py 文件所在的目录及其子目录。

conftest.py 文件所在的父目录及其子目录。

2.3 作用范围

conftest.py 文件的作用范围是其所在的目录及其子目录。

一个项目中可以有多个 conftest.py 文件,每个文件的作用范围独立。

2.4 示例

假设项目结构如下:

project/

├── conftest.py  # 全局 conftest

├── test_module1/

│   ├── conftest.py  # 局部 conftest

│   └── test_file1.py

└── test_module2/

    └── test_file2.py

project/conftest.py 中的 Fixture 对整个项目生效。

test_module1/conftest.py 中的 Fixture 只对 test_module1 目录下的测试文件生效。

3. conftest.py 的使用场景

3.1 全局 Fixture

在 conftest.py 中定义全局 Fixture,如登录接口的 Token 获取。

# conftest.py

import pytest

@pytest.fixture(scope="session")

def get_token():

    token = "example_token"

    print("Token obtained:", token)

    return token

在测试用例中直接使用:

# test_file.py

def test_example(get_token):

    assert get_token == "example_token"

3.2 数据共享

通过 conftest.py 共享测试数据,如数据库连接信息。

# conftest.py

import pytest

@pytest.fixture(scope="module")

def db_connection():

    # 模拟数据库连接

    return "db_connection"

3.3 配置管理

在 conftest.py 中定义全局配置,如测试环境的 URL。

# conftest.py

import pytest

@pytest.fixture(scope="session")

def base_url():

    return "https://api.example.com"‍

4. Fixture 的高级用法

4.1 使用 yield 实现 teardown

Fixture 可以通过 yield 实现资源的清理工作。

@pytest.fixture

def resource():

    print("Setup resource")

    yield "resource"

    print("Teardown resource")

4.2 使用 addfinalizer

除了 yield,还可以通过 request.addfinalizer 注册清理函数。

@pytest.fixture

def resource(request):

    print("Setup resource")

    resource = "resource"

    def teardown():

        print("Teardown resource")

    request.addfinalizer(teardown)

    return resource‍

5. 总结

通过合理使用 Fixture 和 conftest.py,可以实现测试数据的共享、初始化和清理工作,提升测试代码的复用性和可维护性。conftest.py 的加载机制使得 Fixture 可以在不同层级的目录中生效,灵活地满足项目需求。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
在这里插入图片描述​​
在这里插入图片描述​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值