передача аргумента командной строки в 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

есть предостережения для этого и некоторые примеры различных областей / постоянства переменных, которые вы определяли бы в некоторых ответах здесь