【问题标题】:SpecFlow equivalent to parameterized test fixtureSpecFlow 等效于参数化测试夹具
【发布时间】:2020-03-27 12:48:37
【问题描述】:
我正在使用 SpecFlow 编写一组测试,并且我想使用不同的输入数据多次运行每个测试。我可以使用场景大纲来做到这一点,但我想使用相同的测试用例运行功能文件中的每个场景。
我知道我可以使用背景来共享一个案例的设置,但我正在寻找类似背景和场景大纲之间的交叉点,我可以在其中向背景提供数据表并运行整个功能每行一次。
在 NUnit 中,我会使用参数化测试夹具来实现这一点。 SpecFlow 中是否有任何等价物?
【问题讨论】:
标签:
unit-testing
cucumber
specflow
gherkin
【解决方案1】:
您可以利用specflow assist helpers 创建数据表对象并在Background 中使用它
Background:
Given I’ve Entered The Following Information
| FirstName| LastName|Email |
| Abcd1 | Xyz1 |abc1@xyz1.com|
| Abcd2 | Xyz2 |abc2@xyz2.com|
class Person
{
string FirstName { get; set; }
string LastName { get; set; }
string email { get; set; }
}
用法:
[Binding]
[Given(@"I’ve Entered The Following Information")]
public void UseData(TechTalk.SpecFlow.Table table)
{
var enumeratePersons = table.CreateSet<Person>();
foreach (Person P in enumeratePersons ){
log.Info(P.FirstName + " " + P.LastName );
}
}
您可能必须使用属性或规范流上下文在绑定之间共享数据。当Background 运行时,它将为每个场景创建数据对象,但跨绑定使用它是用户的责任