4

私はテストを書いていて、それを再利用したいので、テーブル全体をパラメータ化しようとしています。テーブルは私の「Then」ステートメントにあり、チームによっては検証が必要なテーブルです。

現時点で、私のシナリオの概要は次のようになります。

Given <teamName> uses this end point
And the response is a Json
When I perform a query to http:...
Then I validate all the fields I need:
|DataElement|Validation                     |jsonPath           |
|element1   |validate that it is not null   |data.structure.path|
|element2   |validate a name                |data.structure.name|

したがって、テーブル内のデータをパラメーター化することで、各行を検証できることがわかりました。

|DataElement|Validation                     |jsonPath           |
|<value>    |<Specific validation performed>|<Json Path to query|

次に、例を実行します

しかし、どのチームがこの同じエンドポイントを使用するかによって、必要なデータ要素と検証が大きく異なるため、次のように WHOLE テーブル オブジェクトをパラメーター化したいと考えています。

次に、必要なすべてのフィールドを検証します。

<TeamTable>

Examples:
|Team A Table|
|DataElement|Validation                     |jsonPath           |
|element1   |validate that it is not null   |data.structure.path|
|element2   |validate a name                |data.structure.name|
|element1   |validate age is valid          |data.structure.age |


|Team B Table|
|DataElement|Validation                     |jsonPath                |
|element1   |validate is a Date             |data.structure.date     |
|element2   |validate something more        |data.structure.something|
|element1   |validate US postcode           |data.structure.postcode |

出来ますか?テーブル全体をパラメータ化するにはどうすればよいですか?

4

2 に答える 2

2

Specflow はテーブル パラメータをサポートしています。以下に例を示します。

When following transactions are added
| TransactionDate | TransactionAmount | AccountNumber | Type | CR/DR |
| 1/20/12         | 10,000            | 102           | Cash | DR    |
| 1/20/12         | 6,500             | 106           | Cash | DR    |
| 1/21/12         | 10,001            | 102           | Cash | DR    |

    [When(@"following transactions are added")]
    public void WhenFollowingTransactionsAreAdded(Table table)
    {
        // Now you can either do for each
        foreach (var row in table.Rows)
        {
             // do stuf
        }

        // Or use an assist helpers to map table to an object
        var transactions = table.CreateSet<Transaction>();
    }

アシスト ヘルパーの詳細については、SpecFlow のドキュメントを参照してください。

テーブルに関するより基本的なことはこちら

于 2012-08-14T16:49:37.540 に答える
1

Specflow ではそれが可能だとは思いません。間違っているかもしれません。

また、実行したい種類のテストについては、別のテスト フレームワークを使用するのが最善だと思います。Specflow は、機能をビジネス担当者と共有して議論する必要がある場合に最も価値があります。あなたの例では、ビジネスはに興味がないjsonPathので、テンプレート化されたテストを簡単に作成できるプレーンなNUnitテストに行くことをお勧めします.

于 2012-08-14T10:32:08.260 に答える