SpecFlow - 带示例的数据驱动测试
我们可以借助关键字Examples执行数据驱动测试。我们还将借助关键字Scenario Outline对多个值执行相同的场景。
要考虑的数据集应一个接一个地传递到示例部分下方,并用|符号分隔。因此,如果有三行,我们将从单个场景执行三个测试用例。
Scenario Outline用于使用不同的数据集复制相同的场景。使用不同的值编写相同的测试既麻烦又耗时。例如,
我们可以将上述两种场景与场景大纲结合起来。
因此,我们看到场景大纲应该附带关键字示例。对于示例段下方出现的每一行,场景大纲都会执行一次。
此外,我们已经看到 Given 步骤具有 <> 分隔符。它指向示例表的标题。 SpecFlow 应在将步骤与步骤定义进行匹配之前将值放入此表中。
要验证登录模块,我们需要执行以下步骤 −
用户输入用户名和密码。
验证用户是否能够登录。
我们应将上述步骤合并到功能文件中。
步骤 1:创建功能文件
有关如何创建功能文件的详细信息在 − 功能文件一章中详细讨论。
Feature: User credential Scenario Outline: Login module Given user types <username> and <password> Then user should be able to login Examples: | username | password | | tutorialspoint1| pwd | | tutorialspoint2| pwd1 |
步骤 2:步骤定义文件
有关如何创建步骤定义文件的详细信息,请参见"步骤定义文件"一章。
using System; using TechTalk.SpecFlow; namespace SpecFlowProject1.Features{ [Binding] public class UserCredentialSteps{ //regular expression used to point to data [Given(@"user types (.*) and (.*)")] public void GivenUserTypesUserAndPwds(string username, string password){ Console.WriteLine(username); Console.WriteLine(password); } [Then(@"user should be able to login")] public void ThenUserShouldBeAbleToLogin(){ Console.WriteLine("User should be able to login"); } } }
步骤 3:执行和结果
选择用户凭据 (2),然后单击"在视图中运行所有测试"。
选择登录模块、tutorialspoint1 场景,然后单击"打开此结果的其他输出"链接。
使用 用户名 − tutorialspoint1 和密码 − 执行场景pwd 如示例(第一行)中指定。
选择登录模块、tutorialspoint2 场景,然后单击"为此结果打开其他输出"链接。
测试使用 用户名 − tutorialspoint2 和密码 − pwd1 执行,如示例(第二行)中指定。