将参数传递给 pytest BOTH fixture 和 test

Passing parameters to pytest BOTH fixture and test

我正在使用库中的 python 固定装置 browser_manager,修改或包装在另一个 class 中会很不方便。 browser_manager 接受一些变量 some_config,它由 indirect 传递给这个夹具。

@pytest.fixture(name="browser_manager")
def _browser_manager(request)
    indirect_params = getattr(request, "param", dict())
    return BrowserManager(indirect_params)

@pytest.mark.parametrize(
    "browser_manager",
    [(some_config)],
    indirect=["browser_manager"]
    )
def test_browser_manager(browser_manager):
    # some test goes here

我的问题是如何在测试函数本身中访问 some_configsome_config 成功传递给夹具。我可以简单地传递 some_config 两次,但为了可维护性,我想避免这种情况。之前说过,修改治具会很不方便

谢谢!

回答其实就在我的问题上面。我利用了夹具的要求。

@pytest.fixture(name="browser_manager")
def _browser_manager(request)
    indirect_params = getattr(request, "param", dict())
    return BrowserManager(indirect_params)

@pytest.mark.parametrize(
    "browser_manager",
    [{"attribute": value}],
    indirect=["browser_manager"]
)
def test_browser_manager(browser_manager):
    attr_value = getattr(browser_manager.request, "param", dict()).get("attribute")