4

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

目前我的场景大纲如下所示:

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|

然后做例子

但是根据哪个团队使用相同的端点,所需的数据元素和验证非常不同,所以我想参数化整个表对象,如下所示:

然后我验证我需要的所有字段:

<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>();
    }

有关 Assist 助手的更多帮助,请参阅 SpecFlow文档

更多关于表格的基本内容在这里

于 2012-08-14T16:49:37.540 回答
1

我认为 Specflow 不可能 - 我可能错了。

我还认为,对于您想做的那种测试,最好使用不同的测试框架。当您需要与业务人员分享和讨论功能时,Specflow 会带来最大的价值。在您的示例中,企业不会对此感兴趣,jsonPath因此我建议您进行简单NUnit的测试,您可以轻松地创建模板化测试。

于 2012-08-14T10:32:08.260 回答