我正在使用Python进行一些硒测试,并且我试图设置我的conftest.py
以生成一个新的webdriver夹具,该夹具在整个会话期间持续存在,用于每个所需的功能。所需功能对象的列表通过YAML文件指定,该路径在命令行指定。
这是我conftest.py
的超级缩小版,以说明我到目前为止所拥有的内容:
def pytest_addoption(parser):
parser.addoption("-C", "--capabilities", action="store", default="capabilities.yaml")
def pytest_generate_tests(metafunc):
if 'desired_capabilities' in metafunc.fixturenames:
capabilities_file = metafunc.config.option.capabilities
metafunc.parametrize('desired_capabilities', yaml.load(capabilities_file))
@pytest.fixture(scope="session")
def webdriver(desired_capabilities):
# desired_capabilities should take on the different values of the list in the YAML file
driver = util.create_webdriver(desired_capabilities)
但是使用这段代码,我得到了大量ScopeMismatchError
个。例如,ScopeMismatchError: You tried to access the 'function' scoped fixture 'desired_capabilities' with a 'session' scoped request object, involved factories (... omitted)
我如何实现这类目标?
答案 0 :(得分:1)
我想我已经弄明白了。问题是我需要将scope="session"
添加到parametrize
调用的关键字参数中。