当前位置: 首页 > article >正文

pytest 小技巧:非测试方法如何使用 pytest fixture

不是test开头的普通方法可以使用fixture吗?

是的,普通方法(非以 test_ 开头的方法)也可以使用 pytest 的 fixture,但有一些特别的注意事项。

1、使用 fixture 的方式:
pytest 的 fixture 主要是用来提供测试所需要的资源或数据,通常它会与以 test_ 开头的测试方法一起使用。但是,pytest 并没有限制 fixture 只能在 test_ 开头的方法中使用。普通的非测试方法也可以通过 参数化 来使用 fixture。

2、如何在非 test_ 开头的方法中使用 fixture:
如果希望在非 test_ 开头的方法中使用 fixture,可以通过以下方式:
方法一:直接在方法中传递 fixture
pytest 会自动为需要的测试方法提供 fixture,可以直接将 fixture 作为方法的参数传入。即使方法的名称不是以 test_ 开头,pytest 仍然会注入 fixture。

import pytest

# 定义 fixture
@pytest.fixture
def sample_fixture():
    return "Sample Data"

# 非测试方法
def my_method(sample_fixture):
    print(f"Using fixture data: {sample_fixture}")

def test_usage_of_fixture_in_non_test_method(sample_fixture):
    my_method(sample_fixture)

方法二:使用 request 访问 fixture
在一些特殊的情况下,可以使用 request 对象访问 fixture,并在非测试方法中使用它。request 是 pytest 提供的一种机制,可以在普通方法中引用 fixture。
 

import pytest

# 定义 fixture
@pytest.fixture
def sample_fixture():
    return "Sample Data"

# 普通方法
def my_method(request):
    sample_fixture = request.getfixturevalue('sample_fixture')
    print(f"Using fixture data: {sample_fixture}")

def test_usage_of_fixture_in_non_test_method(request):
    my_method(request)

3、注意事项:
一般情况下,建议将 fixture 用于测试方法中,因为 pytest 的设计目标是测试方法应该是独立的,并且使用 fixture 可以确保在每个测试中创建和销毁资源。
pytest 会自动为以 test_ 开头的方法提供所需的 fixture,而对于普通方法,pytest 无法自动注入它们。因此,如果需要在非测试方法中使用 fixture,可以通过手动传递或 request 来实现。

【总结】
普通方法是可以使用 fixture 的,但需要手动传递或使用 request 来访问。
推荐将 fixture 用于测试方法,以保持测试方法的独立性和隔离性。


http://www.kler.cn/a/443720.html

相关文章:

  • 微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)
  • 用 gdbserver 调试 arm-linux 上的 AWTK 应用程序
  • 什么是MVCC?
  • Linux 基本使用和程序部署
  • Matlab个性化绘图第6期—带标记面的三维折线图
  • 抢单人机交互「新红利」!哪些细分赛道“多金”?
  • 笔记--(Shell脚本04)、循环语句与函数
  • 多功能护照阅读器港澳通行证阅读机RS232串口主动输出协议,支持和单片机/Linux对接使用
  • Midjourney教程之生成同一角色的不同姿势和服装
  • Docker 容器网络问题排查与最佳实践 - PushGateway 部署案例分析
  • 详细分析:AG32 MCU与STM32/GD32的区别
  • Android 折叠屏问题解决 - 展开后布局未撑开
  • 【图像配准】方法总结
  • HarmonyOS NEXT 应用开发实战:音乐播放器的完整实现
  • Vue|scoped样式
  • mapboxGL中室内地图的实现
  • PowerMILL 客制化宏 - 命令关键字
  • 应用如何借用manifestxml追加gid权限
  • PostgreSql-学习06-libpq之同步命令处理
  • go 自己写序列化函数不转义
  • UE5 角色换新枪械的偷懒办法
  • UE5 Lyra项目源码分析-角色配置说明
  • WebRTC服务质量(04)- 重传机制(01) RTX NACK概述
  • 简易记事本开发-(SSM+Vue)
  • Navicat 17 功能简介 | SQL 美化
  • 力扣题目解析--K个一组翻转链表