我在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_FIELD
的其他字段K_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
遍历字段K_STATUS_FIELD
的每个有效值,每个值K_KRED_FIELD
取自Examples
表。
答案 0 :(得分:1)
您可以在步骤定义中使用字典。当你说出这样的话:&#34;并且K_STATUS_Fields是有效的&#34;并且您在步骤定义中使用循环来遍历所有值。
这是一个可能的解决方案,还是我完全理解这个问题?
答案 1 :(得分: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
}