You need to enable JavaScript to run this app. Pytest如何为多个测试函数传递不同参数(如PDF/JPG文件后缀)
优惠活动
大模型
产品
解决方案
定价
更多

Pytest如何为多个测试函数传递不同参数(如PDF/JPG文件后缀)

解决方案

这里给你两种可直接落地的实现方式,按需选择即可:


方式1:参数化fixture(推荐,代码最简洁)

直接给fixture添加params参数,pytest会自动遍历所有参数值,为每个值运行一遍依赖该fixture的测试用例,不需要拆分两个测试函数:

@pytest.fixture(params=['jpg', 'pdf'], ids=['jpg格式测试', 'pdf格式测试'])
def ext(request):
    # request.param会依次取params里的每个值
    return request.param

# 仅需保留1个测试函数,运行时会自动生成2条测试结果
def test_remove_files(ext):
    remove_files(ext)
    time.sleep(3)
    assert len(image_in_folder_OS(ext)) == 0

运行测试后会分别输出两个格式的测试结果,无需手动调整任何参数。


方式2:保留独立测试函数(适合后续两个格式测试逻辑有差异的场景)

不需要修改原fixture,直接用@pytest.mark.parametrize给每个测试函数绑定对应的格式参数即可:

import pytest
import time

@pytest.mark.parametrize('ext', ['pdf'])
def test_remove_files_pdf(ext):
    remove_files(ext)
    time.sleep(3)
    assert len(image_in_folder_OS(ext)) == 0

@pytest.mark.parametrize('ext', ['jpg'])
def test_remove_files_jpg(ext):
    remove_files(ext)
    time.sleep(3)
    assert len(image_in_folder_OS(ext)) == 0

注意点

你原代码里fixture的变量拼写有误:定义的是extention,返回的是extension,运行时会抛变量不存在的错误,注意修正拼写。

内容的提问来源于stack exchange,提问作者B A C H A S H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 21:00:00