我设置了这样的夹具:
def pytest_addoption(parser):
parser.addoption('--env', action='store', default='qa',
help='Specify environment: "qa", "aws", "prod".')
@pytest.fixture(scope='module')
def testenv(request):
return request.config.getoption('--env')
当我针对文件名调用py.test时,这是有效的,例如:
但是当我使用标记调用py.test时它不起作用,如下面的变体:
这些回报:
用法:py.test [options] [file_or_dir] [file_or_dir] [...]
py.test:错误:没有这样的选项: - env
标记和命令行选项是否不兼容?
答案 0 :(得分:2)
它们是兼容的。我的猜测是您的配置文件(conftest.py
)与您启动测试的目录不在同一目录中。 (我可能在这里错了)
我的建议是为配置创建单独的文件:
#configs.py
def pytest_addoption(parser):
parser.addoption('--env',
dest='testenv',
choices=["qa","aws","prod"],
default='qa',
help='Specify environment: "qa", "aws", "prod".')
@pytest.fixture(scope='session')
def testenv(request):
return request.config.option.testenv
并创建您将用作runner.py
命令的py.test
:
#runner.py
import pytest
import sys
import configs
def main():
plgns = [configs]
pytest.main(sys.argv[1:], plugins=plgns)
if __name__=="__main__":
main()
然后你就可以python runner.py --env prod -m selenium
开始了
这对我很有用。