gpt4 book ai didi

python - 在测试中访问 Pytest fixture 参数

转载 作者:行者123 更新时间:2023-12-04 16:45:02 30 4
gpt4 key购买 nike

是否有可能从测试函数访问request.param

使用参数设置 fixture

@pytest.fixture(params=[0,10,20,30])
def wallet(request):
return Wallet(request.param)

测试

def test_init_balance(wallet):
assert wallet.balance == 10

编辑:添加了一个collections.namedtuple解决方案

到目前为止我的工作内容

@pytest.fixture(params=[20,30,40])
def wallet(request):
FixtureHelper = collections.namedtuple('fixtureHelper', ['wallet', 'request'])
fh = FixtureHelper(Wallet(request.param), request)
return fh

然后在测试中访问它

def test_spend_cash(wallet):
wallet.wallet.spend_cash(wallet.request.param)

我仍然希望有更好的解决方案!

最佳答案

这个重复问题的好答案:In pytest, how can I access the parameters passed to a test?

您可以使用 request.node.callspec.params 访问它:

def test_init_balance(request, wallet):
assert wallet.balance == request.node.callspec.params.get("wallet")

或者您可以稍微重构 fixtures:

@pytest.fixture(params=[0, 10, 20, 30])
def balance(request):
return request.param


@pytest.fixture
def wallet(balance):
return Wallet(balance)


def test_init_balance(wallet, balance):
assert wallet.balance == balance

关于python - 在测试中访问 Pytest fixture 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47368073/

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