Как я могу манипулировать опцией командной строки pytest перед ее добавлением в объект конфигурации?
Мне нравится преобразовывать параметр командной строки из строки CSV в список, чтобы я мог параметризовать его и выполнить некоторые проверки работоспособности:
#### for --webhost parameter ###
def pytest_addoption(parser):
#parser.addoption("--webhost")
p = argparse.ArgumentParser(description="convert webhost string to array")
p.add_argument('--webhost', help='webhost to run tests on (default: %(default)s)', default="TEST1,TEST12,TEST4,PROD")
args, notknownargs = p.parse_known_args(sys.argv)
if notknownargs:
print("pytest arguments? : {}".format(notknownargs))
sys.argv[1:] = notknownargs
if args.webhost and isinstance(args.webhost, str):
args.webhost = args.webhost.split(',')
parser.addoption("--webhost", help='webhost to run tests on (default: %(default)s)', default=args.webhost)
Моя задача - вызвать два метода parser.addoption (),
Если я прокомментирую первый:
pytest: error: unrecognized arguments: -webhost=TEST1
Итак, чтобы позволить pytest разрешить параметр, я раскомментирую его, но затем получаю это в последней строке:
ValueError: option names {'--webhost'} already added
Нет Parser.setoption () или аналогичного для изменения существующего параметра.
Мой обходной путь - использование двух переменных или установка отдельного объекта args. Я импортирую с from conftest import args
, но тогда это за пределами конфигурации.