将参数传递给 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_config
? some_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")
我正在使用库中的 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_config
? some_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")