如何在 Pytest 中调用其他用例返回的接口参数?

回答重点

在 Pytest 中,我们可以通过使用共享夹具(fixtures)来调用和复用其他用例返回的接口参数。在 Pytest 中,fixtures 提供了一种灵活且有组织的方式来共享测试数据或对象。

具体步骤如下:

1)首先,在 conftest.py 文件中定义一个 fixture 函数,该函数会返回你希望共享的参数。这个 fixture 可以通过标识符传递给任何测试函数。

2)在需要复用该参数的测试函数中,通过传递相应的参数名来引用该 fixture。

下面是一个示例代码,可以帮助你理解:

复制代码
# conftest.py
import pytest

@pytest.fixture
def api_response():
    # 假设这是你从接口获取的参数
    response = {
        "token": "abc123",
        "user_id": 1
    }
    return response

# test_example.py
def test_first_example(api_response):
    assert api_response["token"] == "abc123"
    
def test_second_example(api_response):
    assert api_response["user_id"] == 1
    # 你可以继续使用 `api_response` 进行其他测试或接口调用

在上述示例中, api_response 是一个 fixture,它返回一个包含 tokenuser_id 的字典。任何需要这些数据的测试函数,只需声明它们的参数即可自动获取此数据,从而实现复用。

扩展知识

1) Fixture 的 作用域

Fixture 可以设置不同的作用域级别(如 function, class, module, session),这决定了 fixture 的生命周期。作用域越大,fixture 的创建和销毁次数越少。

复制代码
@pytest.fixture(scope="module")
def api_response():
    # 模块级别的 fixture,在整个模块中共享
    ...

2) Fixture 的依赖

Fixture 之间也可以相互调用,从而构建更加复杂的数据依赖。

复制代码
@pytest.fixture
def auth_token():
    return "secret-token"

@pytest.fixture
def api_response(auth_token):
    return {
        "token": auth_token,
        "user_id": 1
    }

3) 动态生成数据

有时我们需要为每个测试生成不同的数据,可以用 yield 关键字或者动态计算的方法来实现。

复制代码
@pytest.fixture
def dynamic_response():
    token = generate_token()
    return {
        "token": token,
        "user_id": random_user_id()
    }
相关推荐
biter down5 小时前
14:pytest-order 插件 顺序控制案例
开发语言·python·pytest
测试开发-学习笔记5 小时前
从0开始搭建自动化(一)-appium+python
python·自动化
Raink老师7 小时前
【AI面试临阵磨枪-62】设计基于 RAG 的内部知识库问答平台(多租户、权限、文件上传、实时更新)
人工智能·面试·职场和发展
Raink老师9 小时前
【AI面试临阵磨枪-68】设计一个端侧(手机 / 浏览器)轻量化 AI Agent 系统
人工智能·面试·智能手机
十年一梦实验室10 小时前
【ChatGPT】阳极氧化线 Global SI 自动化系统深度拆解、爆炸图10张、信息图10张、C++代码框架
运维·自动化
北京耐用通信11 小时前
耐达讯自动化:专业解决MODBUS TCP转PROFIBUS协议转换难题
人工智能·物联网·网络协议·自动化·信息与通信
张元清11 小时前
驯服 React 里的 DOM 事件:useEventListener、useEventEmitter、useKeyModifier、useTextSelect
前端·javascript·面试
rcms1527026921812 小时前
METSO A413248自动化系统
运维·自动化
basketball61612 小时前
SQL 基础面试考点总结
数据库·sql·面试
新时代农民工~13 小时前
PostgreSQL 主从故障恢复自动化:实战脚本与最佳实践
数据库·postgresql·自动化