You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向PyTest的parametrize传多列表为每个文件夹生成独立用例

问题原因

你当前的实现存在两个核心错误:

  • 参数化结构不符合需求:@pytest.mark.parametrize中传入的参数组为(环境名, 文件夹列表),导致测试函数接收的folder参数是完整列表,而非单个文件夹,assert folder in expected_folders的判断逻辑完全不成立。你需要将参数展开为(环境名, 单个文件夹)的一一对应结构,才能为每个文件夹生成独立测试用例。
  • get_folders函数定义不匹配:函数声明时没有设置入参,但测试逻辑中调用时传入了env变量,运行时会触发参数数量不匹配的报错。
修复方案
import pytest

# 统一维护环境和对应预期文件夹的映射,后续新增环境/文件夹只需修改这个字典
env_folder_map = {
    "dev": ["dev_data", "logs", "debug"], # 文件夹数量超过30也可正常支持
    "prod": ["prod_data"]
}

# 把映射展开为参数化需要的(环境,单个文件夹)元组列表
test_cases = [(env, folder) for env, folders in env_folder_map.items() for folder in folders]

@pytest.mark.parametrize("env, folder", test_cases)
def test_folder_exists(env, folder):
    actual_folders = get_folders(env)
    assert folder in actual_folders, f"环境[{env}]下缺失预期文件夹: {folder}"

# 修复函数定义,新增env入参
def get_folders(env):
    # 此处编写获取对应环境实际存在文件夹列表的逻辑即可
    ...
效果说明

修改后会自动为每个环境的每个文件夹生成独立测试用例,示例用例名如下:

  • test_folder_exists[dev-dev_data]
  • test_folder_exists[dev-logs]
  • test_folder_exists[dev-debug]
  • test_folder_exists[prod-prod_data]
    单个文件夹验证失败不会影响其他用例的执行结果,可直接定位到具体缺失的文件夹。

内容的提问来源于stack exchange,提问作者Valentyn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:57:00