2016-10-26 11 views
1

私は、私たちのプロジェクトのいくつかを記述するためにBDD機能を使用しています。ほとんどのシナリオは、djangoテストクライアントhttps://docs.djangoproject.com/en/1.10/topics/testing/tools/を使用して実装されていますが、一部はセレンでテストされています。理論的には、これらの機能のいくつかは両方のアプローチ(セレンとテストクライアントの両方)でテストできますが、私はコーディングの観点からこのアプローチにどのようにアプローチするのか分かりません。私は自分のbddシナリオの実装をフリーにしたい(「私がテストツールとしてセレンを使用していることを考えると、何もしない」)。Django + bdd +セレニウム

私は実行可能なときに各ステップの複数の定義を持つことを考えていましたし、与えられたシナリオに対してすべてのステップを実装した実装(またはそれ以上)を使用しました。それは私が推測するようにPythonの振る舞いを変更する必要があります。誰も同様の問題に直面している?

編集:私が見つけた

まず最初は、ステージを使用して、「舞台」の各実装を持つことです。 https://pythonhosted.org/behave/new_and_noteworthy_v1.2.5.html#test-stages ちょっと私の問題を解決することができ、私は各段階のテストを実行することができます。解決すべきことは、実装(段階)固有の機能だけです。最悪のシナリオ私はダミーの通過ステップを作ることができます。

答えて

1

私はこれを各実装(django、selenium)+各機能にタグ付けし、対応するstage +タグペアで実行する段階でこれを解決しました。 例:

python mnage.py behave --tags=selenium --stage=selenium 

https://pythonhosted.org/behave/new_and_noteworthy_v1.2.5.html#test-stages https://pythonhosted.org/behave/gherkin.html#tags

編集:このソリューションは、1つのより大きな欠点を持っている - あなたは(たとえば、私がそうであるように)ジェンキンスとそれを使うので、もし報告書は、最後の実行から結果のみが含まれている、あなたドンすべての結果が正しく表示されています(実際に通過したときにスキップされるものもあります)。しかし、全体的に少なくともビルドはテストエラーが発生したときに失敗し、それが私の主なものです。