testing - SpecFlow - 如何使用 NUnits TestCaseSource 属性等数据驱动测试?

标签 testing dynamic specflow data-driven testcasesource

我是一名 QA,决定使用 SpecFlow经过一番考虑后,我的测试自动化。我认为它很棒,但缺少一个我经常与其他测试运行程序(如 NUnit)一起使用的功能 - 类似于 TestCaseSource 的功能来自 NUnit 的属性,用于指定一组潜在的动态数据,以便在运行时针对要运行的测试进行测试。

我通常会在测试运行的每个环境中拥有不同的数据,因此无法为测试参数指定硬编码值。一个简单的例子是检查每种类型的用户帐户是否能够登录,可以使用数据库查询检索用户帐户凭据以在 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 中还没有找到任何类似的东西,有没有人知道可以使用与上述类似的东西(或者如果从事该项目的任何人阅读此内容,则计划使用)?

谢谢:)

最佳答案

我不知道是否有这样的计划,但目前的问题是当您通过 Visual Studio 编辑功能文件时有一个后台代码生成步骤。

当它保存在 Visual Studio 中时,它会被解析并转换为 feature.cs 文件,该文件将被编译并用于测试。

所以你的流程会变成

  • 编辑您的数据源
  • 导出到特征文件
  • 获取 specflow 的 VS 插件以转换为 feature.cs
  • 运行 msbuild
  • 通过 Nunit 或类似工具运行测试

我不会这样做。相反,我会专注于让我的测试成为更好的例子。听起来您要尝试详尽地涵盖所有可能性。不要想出例子来涵盖所有可能的情况,而是用更少的测试覆盖尽可能多的逻辑。

关于testing - SpecFlow - 如何使用 NUnits TestCaseSource 属性等数据驱动测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14747901/

相关文章:

javascript - 如何避免为每个 Jest 测试用例重新运行异步 API 调用?

ruby-on-rails - RSPEC - 测试说对象为零,但在实践中工作正常

python - Selenium (Python)+ react

dynamic - 如何学习实时编译?

sql - 如何在 SQL Server 中围绕动态数量的组对值进行分组

r - 如何识别向量的确切元素是什么?

java - 我的 Android App Java 中的动态透明背景

c# - 如何使用 XPath 和使用参数获取值?

c# - 在具有两个不同参数的线上找到多个匹配绑定(bind)

specflow - 我可以在 Specflow 中重用场景吗?