2016-10-13 12 views
1

私はいくつかのシナリオを持つ機能を持っています。ユーザーがいくつかの可能なロールとしてログインしている場所でテストする必要があります。BDD Gherkin Scripts:複数のロールに対するシナリオの同じグループ

Examplesテーブルをバックグラウンドに配置することはできますか?たとえば:

Feature: My general set of tests 

Background: 
Given I am logged in 
And I am logged in as <role> 

Examples: 
| role | 
| Sales | 
| Support | 
| Admin | 
| Auditor | 

Scenario: tests1 blah... 

Scenario Outline: tests 2 blah... 

は、だから私は何をしたいのかという役割ごとに別々の機能ファイルを維持することよりも、異なるバックグラウンド・コンテキストを使用してファイルを備えています誰を反復処理です。これは可能ですか?

答えて

0

いいえ、これはできません。あなたが得ることができる最も近いものは、「いつもの役割(セールス、サポート、管理者、監査人)のいずれかにログインしています」というステップ定義です。実際の役割は毎回ランダムに選択されます。もちろん、これはテストを非決定論的にするでしょう。もしあなたがこの役割が本当に結果に全く影響を与えないと100%肯定的であれば、受け入れられるかもしれません。もちろんその場合は、あなたのシナリオでその役割について何も言及しないことを検討すべきです。

0

実際にはBDDはテストに関するものではありません。我々はの例を使って、の私たちが望む振る舞いを示しています。必要なのは、その動作の例を提供する1つのシナリオだけです。

役割のいずれかが異なる動作を提供する場合は、その動作の例もあります。

結果がすべてのロールで同じであることをテストするためのより良い場所は、どのクラスでも異なる結果にロールをリンクする単位テストレベルである可能性があります。もちろん、手動でテストすることもできます。チャンスは非常に良いことです。もしそれが正しいとそれが手作業で働くならば、それはあなたが持っている一つの例を破ることなく壊れないでしょう。それは十分だ。

このようなすべての役割のすべての順列を試してみると、非常に遅いビルドと非常に多くのシナリオになりますが、それ以上の面白いものはありません。テストではなく、説明しようとしているものの例を考えてみると、より簡単に時間を取ることができます。

+0

この時点までにあなたは正しいと思います。解決策は、単一の典型的な役割を使用してそのシナリオを実行し、すべての役割オプションを実行する単一のシナリオで、その機能の特定の単一機能で作業できるようにすることです。 –

関連する問題