pytest参数化,多个参数时,参数不进行中交叉(笛卡尔积 方式 不使用)

import pytest

data01 = [11, 22, 33, 44, 55]
data02 = [111, 221, 331, 441, 551]

@pytest.mark.parametrize(“da01”, data01)
@pytest.mark.parametrize(“da02”, data02)
def test_add(da01, da02):
print(da01 + da02)

解说: 这种 使用就是 笛卡尔积效果 不交叉取值

需求是: 不需要笛卡尔积, 就是各个变量 取 对应的集合数据

参考下

par = [(1, 2, 3), (1, 2, 4)]


@pytest.mark.parametrize("a,b,c", par)
def test_demo(a, b, c):
    re = a + b
    assert re == 3

这种方式,我懂,但是我不是需要这个格式的
我需要两种参数,进行参数化,对应变量,而不是在取值的时候 交叉取值

是这个意思吗?

import pytest

data01 = [1, 2, 3]
data02 = [11, 22, 33]

data = [(n, data02[index]) for index, n in enumerate(data01)]

@pytest.mark.parametrize("da01, da02", data)
def test_demo(da01, da02):
    print(f"{da01} + {da02} = {da01 + da02}")
collected 3 items

demo.py::test_demo[1-11] 1 + 11 = 12
PASSED
demo.py::test_demo[2-22] 2 + 22 = 24
PASSED
demo.py::test_demo[3-33] 3 + 33 = 36
PASSED

是这个意思,老师,我看这个是需要加自带函数的列表推导式操作 整合数据 ?
有没有系统的介绍?

但是有个问题,这个需要在参数化之前 做一个处理,
因为这些数据都是已经录入在yml文件中的

  1. 我也是同学哈,碰巧知道,互相帮助;
  2. 数据的组合了解一下 Python 枚举
  3. “因为这些数据都是已经录入在yml文件中的”,可以先解析 yml 文件,得到数据后再进行组装。

这是 python yml 文件的解析方法

yaml.safe_load(stream)

这个我知道,我现在是想问参数化,多个参数时,怎么解决 “不会出现笛卡尔积问题”

目前我的解决办法是:自己组装。

怎么组装,是单独写一个公共方法,直接去返回值?

嗯嗯

好的,谢谢 提取方法,作为全局变量使用

关闭