SpecFlow - 表转换为字典


表格可以保存特征文件中水平和垂直方向的数据。通过Dictionary对象,我们将了解如何以键值对的方式垂直访问特征文件中的数据。

第 1 步:创建特征文件

如何创建功能文件的详细信息将在“功能文件”一章中详细讨论。

Feature: User credential
Scenario: Login module
   When User types details
   | KY       | Val            |
   | username | tutorialspoint |
   | password | pwd1           |
Then user should be able to login

步骤 2:创建 C# 文件来访问表数据

我们必须通过System.Collections.Generic包将表转换为字典。我们将在项目中创建一个新文件夹,并在其中包含一个 C# 文件。右键单击SpecFlow 项目,然后单击添加

选择“新建文件夹”选项。

SpecFlow 协助

将文件夹命名为Utils 。

右键单击创建的新文件夹,然后选择“添加”选项。单击班级

实用程序

项目文件夹结构

实用工具

C# 类实现

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using TechTalk.SpecFlow;
namespace SpecFlowProject1.Utils {
   class Class1 {
      public static Dictionary<string, string> ToDT(Table t) {
         var dT = new Dictionary<string, string>();
         
         // iterating through rows
         foreach (var r in t.Rows) {
            dT.Add(r[0], r[1]);
         }
         return dT;
      }
   }
}

步骤 3:创建步骤定义文件

如何创建步骤定义文件的详细信息将在“步骤定义文件”一章中详细讨论。

using System;
using TechTalk.SpecFlow;
namespace SpecFlowProject1.Features {
   [Binding]
   public class UserCredentialSteps {
      [When(@"User types details")]
      public void WhenUserTypesDetails(Table t) {  
         
         //Accessing C# class method from Step Definition
         var dict = Utils.Class1.ToDT(t);
         Console.WriteLine(dict["username"]);
         Console.WriteLine(dict["password"]);
      }   
      [Then(@"user should be able to login")]
      public void ThenUserShouldBeAbleToLogin() {
         Console.WriteLine("User should be able to login");
      }
   }
}

第 4 步:执行和结果

选择“用户凭证(1)功能”,然后单击“运行视图中的所有测试”

测试视图

选择“登录模块方案”,然后单击“为此结果打开附加输出”链接

测试视图

测试视图

该场景是在“何时”步骤中使用从特征文件中的表(转换为字典)传递的数据执行的。