переписать параметр командной строки pytest - PullRequest
0 голосов
/ 05 июня 2019

Как я могу манипулировать опцией командной строки 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, но тогда это за пределами конфигурации.

...