BDDテストにpython-behaveを使用していますが、コマンドラインからURL(www.abc.comなど)を渡す必要があります。
$behave -u "www.abc.com"
これを実現するために、 behaveドキュメント を読みましたが、behave.iniファイルを設定するための十分な資料と説明がありません。また、behave.iniファイルが引数の受け渡しにどのように役立つかわかりません。
誰かが動作するコマンドラインパラメータを設定する方法を教えてもらえますか?
いいえ、できません。configuration.py
ファイルに 定義済み であるparser
があり、 許可 定義済み オプション)のみであるためです。 その。
ただし、必要に応じて(モンキーパッチを使用して!)、この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
を実行すると、新しいurl
オプションが表示されます。
$ python behave_run.py --help | grep url
-u URL, --url URL Address of your url
これで、このbehave_run.py
ファイルをbehave
ファイルのように実行し、url引数も渡すことができます。
$ python behave_run.py --url http://google.com
また、このurl
オプションの値にcontext.config.url
を使用して、たとえばenvironment.py
ファイルでアクセスし、他の関数で使用できるように設定できます。
def before_all(context):
context.browser = webdriver.Firefox()
context.url = context.config.url
注:
どこからでもpython run_behave.py
をrun_behave.py
として呼び出す場合は、次の行を追加します。
#!/usr/bin/env python
run_behave.py
の最初の行に移動し、そのモードをchmod +x run_behave.py
の実行可能ファイルに変更してから、このファイルをPATH
の1つの場所、たとえば/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
これを行うには注意点があり、いくつかの回答で定義する変数のさまざまなスコープ/永続性の例がいくつかあります ここ
Jenisysが言ったように、ユーザーデータを渡す方法は次のとおりです。
behave -D NAME=VALUE
ビヘイビアステップファイルからアクセスする方法は次のとおりです。
context.config.userdata['NAME']