2012-08-14 59 views
3

我正在写一个测试,我想重用它,因此我试图参数化整个表。该表位于我的'Then'语句中,取决于团队是需要验证的表。Specflow参数化整表

此刻我的方案大纲是这样的:

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 | 

这可能吗?我如何参数化整个表格?

回答

1

我不认为这是可能的Specflow - 我可能是错的。

我也想为你想要做的测试,最好是使用不同的测试框架。 当您需要与商业人士共享和讨论功能时,Specflow带来最大的价值。在您的示例中,业务不会对jsonPath感兴趣,所以我建议您进行简单的NUnit测试,以便您可以轻松创建模板测试。

1

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有关表docs

更基本的东西here