gpt4 book ai didi

python - 从参数化测试访问 fixture (例如,capsys)

转载 作者:行者123 更新时间:2023-12-01 03:16:56 30 4
gpt4 key购买 nike

我在参数化测试中访问固定装置(在本例中为 capsys)时遇到问题。目前我正在使用虚拟 fixture 来完成这项工作:

import pytest

@pytest.fixture
def params(request):
from collections import namedtuple
return namedtuple('Params', 'input output')(*request.param)

@pytest.mark.parametrize('params', [
('a', '1a\n'),
('b', '1b\n'),
], indirect=True)
def test_output(capsys, params):
print('1' + params.input)
out, err = capsys.readouterr()
assert out == params.output

有没有办法在没有 params 固定装置的情况下重写此代码?

最佳答案

您只需删除间接参数即可:

import pytest

@pytest.mark.parametrize('params', [
('a', '1a\n'),
('b', '1b\n'),
])
def test_output(capsys, params):
inp, expected = params
print('1' + inp)
out, err = capsys.readouterr()
assert out == expected

但更好的方法是让 parametrize 直接按名称传递参数:

import pytest

@pytest.mark.parametrize('inp, expected', [
('a', '1a\n'),
('b', '1b\n'),
])
def test_output(capsys, inp, expected):
print('1' + inp)
out, err = capsys.readouterr()
assert out == expected

关于python - 从参数化测试访问 fixture (例如,capsys),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42391770/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com