0

Specflow には次のシナリオがあります。

Scenario Outline: K_KRED_FIELD - validation
    Given that K_KRED_FIELD has value <value>
    And that K_STATUS_FIELD has value <value_status>
    When I run rule K_KRED_RULE
    Then value of this field is <validation_result>

Examples: 
    | value         | value_status| validation_result |
    | 0.00          | Cancelled   | valid             |
    | 0.00          |             | invalid           | 

一般的な考え方は次のとおりです。ルールを使用してK_KRED_FIELD、他のフィールドの値に応じて、フィールドの値が有効かどうかを確認します。私は多くのフィールドとそのような多くのルールを持っています。K_STATUS_FIELDK_KRED_RULE

フィールドK_STATUS_FIELDには多くの有効な値があります (約 50)。もちろん、これらの値ごとに例を作成することは可能ですが、時間がかかり、他のフィールドが に依存してK_STATUS_FIELDいるため、それぞれに約 50 の例が必要です。

有効な値を持つ辞書のようなものを作成し、K_STATUS_FIELDそれぞれに対してテストを実行することは可能ですか? みたいなことを考えていた

Scenario Outline: K_KRED_FIELD - validation
    Given that K_KRED_FIELD has value <value>
    And that K_STATUS_FIELD value is valid
    When I run rule K_KRED_RULE
    Then value of this field is <validation_result>

Examples: 
    | value         |  validation_result |
    | 0.00          |  valid             |
    | 0.00          |  invalid           | 

テーブルから取得した各値を使用しAnd that K_STATUS_FIELD value is validて、field の各有効値を反復処理します。K_STATUS_FIELDK_KRED_FIELDExamples

4

2 に答える 2

1

ステップ定義で辞書を使用できます。「そして、K_STATUS_Fields は有効です」のようなことを言い、ステップ定義でループを使用してすべての値を調べる場合。

それはあなたにとって可能な解決策ですか、それとも私は問題を完全に理解していますか?

于 2012-08-30T11:55:29.797 に答える
0

例のテーブル/辞書を背景として設定できます。

Background:
    Given the following table
    | value             | result      |
    | 0                 | xxx         |
    | 1                 | yyy         |

Scenario: Scenario 1
    When something is done <value>
    And ...
    Then...
Scenario: Scenario 2
    When ...
    And ...
    Then...

それで:

    [Given(@"the following table")]
    public void GivenTheFollowingTable(Table table)
    {
        foreach (var row in table.Rows)
        {
            //fill up the dictionary
        }

        //add dictionary to Context
        ScenarioContext.Current.Add("ScenarioName", scenarioName);
    }

    [When(@"something is done")]
    public void WhenSomethingIsDone(string value)
    {
        //Get dictionary from Context
        var myDictionary = ScenarioContext.Current.Get<Dictionary<string,string>>("MyDictionary");

        //do something
    }   
于 2012-08-30T21:46:57.547 に答える