передача аргумента командной строки в python-behave
Я использую python-behave для тестирования BDD, я должен передать URL (например www.abc.com) из командной строки.
$behave -u "www.abc.com"
чтобы достичь этого, я прочитал вести документацию но для настройки поведения недостаточно материалов, а также объяснений.ini-файл. Я также не уверен, как себя вести.ini-файл помогает мне передать аргумент.
может кто-нибудь сказать мне, как я могу настроить параметры командной строки для поведения?
3 ответов
нет, это невозможно, потому что есть parser
что это определена на , и только разрешить определена опции его.
но если вы хотите, вы можете (с помощью monkey patch !), просто добавьте свой вариант, так же как и другие варианты этого parser
.
для этого сначала создайте файл, например behave_run.py
и исправить это parser
перед запуском behave
:
from behave import configuration
from behave import __main__
# Adding my wanted option to parser.
configuration.parser.add_argument('-u', '--url', help="Address of your url")
# command that run behave.
__main__.main()
и теперь, если вы запустите python behave_run.py --help
, вы можете увидеть ваш новый :
$ python behave_run.py --help | grep url
-u URL, --url URL Address of your url
теперь, вы можете запустить этот как behave
файл и передать свой аргумент url тоже:
$ python behave_run.py --url http://google.com
и вы можете получить доступ к этому значению С context.config.url
, например, и затем установить его для использования в других функциях:
def before_all(context):
context.browser = webdriver.Firefox()
context.url = context.config.url
Примечание:
если вы хотите позвонить python run_behave.py
as run_behave.py
из любого места добавьте эту строку:
#!/usr/bin/env python
в первой строке run_behave.py
и измените его режим на исполняемый файл с помощью chmod +x run_behave.py
а затем скопируйте этот файл в одно место вашего PATH
, например,/usr/local/bin
С sudo mv run_behave.py /usr/local/bin/run_behave.py
предложенные выше решения были необходимы в прошлом.
behave-1.2.5 предоставляет концепцию "userdata", которая позволяет пользователю определять свои данные:
behave -D browser=firefox ...
ЧИТАЙТЕ ТАКЖЕ: вести себя: userdata
альтернативой большому ответу Omid, было бы установить переменные среды перед вашим вызовом, чтобы вести себя, что-то вроде:
TESTURL="www.abc.com" behave
есть предостережения для этого и некоторые примеры различных областей / постоянства переменных, которые вы определяли бы в некоторых ответах здесь