我是一名 QA,经过一番考虑后决定使用SpecFlow进行测试自动化。我认为它很棒,但是缺少一个我经常与其他测试运行程序(例如 NUnit)一起使用的功能 - 类似于 NUnit 中的TestCaseSource属性,用于为要在运行时运行的测试指定一组潜在的动态数据。
在测试应该运行的每个环境中,我经常会有不同的数据,因此无法为测试参数指定硬编码值。一个简单的例子是检查每种类型的用户帐户是否能够登录,可以使用 DB 查询检索用户帐户凭据以在 NUnit 中动态填充每个测试用例:
public List<User> GetTestData()
{
List<User> testData = new List<User>();
testData = MyDatabase.GetAllUsersInfo().ToList();
return testData;
}
[Test, TestCaseSource("GetTestData")]
public void CallLoginService(User user)
{
var response = LoginController.TryLogin(User.UserName, User.Password);
if (response.Error != null)
{
Assert.Fail("Failed to Login: {0}", response.Error);
}
Assert.AreEqual("Logged in ok", response.Message, "Login message not as expected");
}
显然,这是该功能的一个简单示例,但我认为它描述得足够好。我知道我们有能力在 SpecFlow 中使用场景大纲和测试运行输入数据表,但这仍然是静态的,因此不符合要求。
我已经找了一段时间了,还没有在 SpecFlow 中找到像这样的任何东西,有没有人知道可以使用与上述类似的任何东西(或者如果从事该项目的任何人读到这个,则计划使用)?
谢谢 :)