gpt4 book ai didi

python - pytest如何制作一个参数化另一个 fixture 的 fixture

转载 作者:行者123 更新时间:2023-12-04 15:07:34 31 4
gpt4 key购买 nike

我有很多通过 pytest 管理的参数化装置。

有时,我希望使用 fixture 的测试不必担心应用参数。

是否可以制作一个参数化另一个 fixture 的 fixture ?

import pytest

class Foo:
def __init__(self, a: int, b: int):
pass

@pytest.fixture
def foo(a: int, b: int) -> Foo:
return Foo(a, b)

@pytest.fixture
@pytest.mark.parametrize("a, b", [(2, 3)]) # How can I do this?
def fixture_parametrizing_another_fixture(foo: Foo) -> Foo:
return foo

# I don't want to parametrize here, I want the fixture already set up
def test_with_second_fixture(fixture_parametrizing_another_fixture: Foo):
pass

最佳答案

我不认为你可以按照你想要的方式做到这一点,但也许将 fixture 参数与普通功能结合使用就足够了,例如:

...
def foo(a: int, b: int) -> Foo:
return Foo(a, b)

@pytest.fixture(params=[(3, 2)])
def parametrized_fixture1(request) -> Foo:
yield foo(request.param[0], request.param[1])

@pytest.fixture(params=[(5, 6), (7, 8)])
def parametrized_fixture2(request) -> Foo:
yield foo(request.param[0], request.param[1])

def test_with_second_fixture1(parametrized_fixture1: Foo):
# one test with (3,2)
pass

def test_with_second_fixture2(parametrized_fixture2: Foo):
# two tests
pass

当然,这只有在您想要对多个测试使用相同的参数时才有意义。

关于python - pytest如何制作一个参数化另一个 fixture 的 fixture ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65819690/

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