我有下一个关于最热的代码:

import pytest


@pytest.fixture
def my_fixture():

  def _method(a_list):
    return [num*0.5 for num in a_list]

  return _method


# @pytest.mark.parametrize ??
def test_me(my_fixture):
    pre_list = [0, 3, 1, 2]
    finally_list = my_fixture(pre_list)

    for i in finally_list:
        assert i < 10

其含义如下.我有测试的初始数据("prelist").首先,我需要使用灯具来转换它们.我是通过该装置中的另一个函数"_方法(A_List)"完成的. 但是,我想在当前测试中使用从‘Finally_List’获得的值进行参数设置.这真的有可能做到吗? 使用装置转换来自测试的数据,然后使用它们对同一测试进行参数化

当我运行以下各项的所有值时: for i in finally_list: assert i < 10个 但这不是我想要的.我希望通过参数化对每个值进行单独的测试.

推荐答案

你可以用Indirect parametrization美元.

示例:

import pytest


@pytest.fixture
def my_fixture(request):
  return request.param * 0.5


@pytest.mark.parametrize('my_fixture', [0, 3, 1, 2], indirect=True)
def test_me(my_fixture):
    assert my_fixture < 10

这将确保首先将所有值传递给您的装备,并按照您希望的方式对其进行修改,然后到达测试用例. 对于pytest --collect-only <your_test_file.py>,上面的示例应该会给出大约以下输出(取决于您的插件、运行它的位置等):

========================================== test session starts ==========================================
platform linux -- Python 3.10.12, pytest-7.4.0, pluggy-1.3.0
rootdir: /tmp/tests
collected 4 items                                                                                       

<Module t.py>
  <Function test_me[0]>
  <Function test_me[3]>
  <Function test_me[1]>
  <Function test_me[2]>

====================================== 4 tests collected in 0.00s =======================================

Python-3.x相关问答推荐

以编程方式关闭jupyterlab内核

链接列未延伸到数据框的末尾

Python 舍入数字不准确

在 python 中使用正则表达式在行尾查找特定元素

嵌套协议的使用(协议成员也是协议)

如何将列表和字典逐行组合在一起

获取字符串中的两个工作日之间的差异

协议不支持地址系列在将 Scapy L3socket 与 WSL 一起使用时

Dask 多阶段资源设置导致 Failed to Serialize 错误

Python pandas将单元格值移动到同一行中的另一个单元格

ImportError:无法从jinja2导入名称escape

请求:RecursionError:超出最大递归深度

有没有更好的方法来判断一个数字是否是两个数字的范围

pysftp vs. Paramiko

ImportError:无法导入名称cross_validate

创建集合的 Python 性能比较 - set() 与 {} 文字

类方法和实例方法同名

如何强制 Sphinx 使用 Python 3.x 解释器

如何为 anaconda python3 安装 gi 模块?

无法解码 Python Web 请求