- SpecFlow 教程
- SpecFlow - 主页
- SpecFlow - 简介
- 测试驱动开发
- Behave驱动开发
- SpecFlow - Visual Studio 安装
- Visual Studio 扩展安装
- SpecFlow - 项目设置
- 其他项目依赖项
- SpecFlow - 运行器激活
- SpecFlow - HTML 报告
- SpecFlow - 结合测试步骤
- SpecFlow - 创建第一个测试
- 配置 Selenium Webdriver
- SpecFlow - 小Cucumber
- SpecFlow - 小Cucumber关键词
- SpecFlow - 特征文件
- SpecFlow - 步骤定义文件
- SpecFlow - 挂钩
- SpecFlow - 背景插图
- 数据驱动测试示例
- 没有示例的数据驱动测试
- 表转换为数据表
- 表转换为字典
- 带有 CreateInstance 的表
- SpecFlow - 带有 CreateSet 的表
- SpecFlow 有用资源
- SpecFlow - 快速指南
- SpecFlow - 有用的资源
- SpecFlow - 讨论
SpecFlow - 表转换为数据表
表经常与场景大纲混淆。虽然场景大纲适用于完整的测试,但表格仅适用于定义它的单个步骤。
然而,需要构建一个编程逻辑来理解数据,然后才能将其合并到我们的测试中。示例关键字用于场景大纲,但数据表不需要关键字。
SpecFlow 中的 Table 有多种方法可用,让我们看看如何通过Table headers将 Table 转换为 Table 。
表用于将一组值以列表的形式发送到步骤定义文件。它对于处理大型数据集很有用。SpecFlow 在步骤定义文件中具有丰富的用于表操作的 API。
SpecFlow Assist Helpers包用于在表上工作。另外,我们必须将命名空间TechTalk.SpecFlow.Assist添加到我们的代码中。
第 1 步:创建特征文件
如何创建功能文件的详细信息将在“功能文件”一章中详细讨论。
Feature: User credential Scenario: Login module When User types details | Name | Password | | t1 | pwd | | t2 | pwd1 |
然后用户应该能够登录。
步骤 2:创建 C# 文件来访问表数据
我们必须通过System.Data包将表转换为数据表。我们将在项目中创建一个新文件夹,并在其中包含一个 C# 文件。右键单击 SpecFlow 项目,然后单击添加。
选择“新建文件夹”选项。
将文件夹命名为Utils 。
右键单击创建的新文件夹,然后选择“添加”选项。单击班级。
在搜索框中键入C# Class并搜索。从搜索结果中选择选项“类别” ,然后单击“添加”继续。
项目文件夹结构
C# 类实现
using System; using System.Collections.Generic; using System.Text; using System.Data; using TechTalk.SpecFlow; namespace SpecFlowProject1.Utils { class Class1 { public static DataTable DT(Table t) { var dT = new DataTable(); foreach (var h in t.Header) { dT.Columns.Add(h, typeof(string)); } // iterating rows foreach (var row in t.Rows) { var n = dT.NewRow(); foreach (var h in t.Header) { n.SetField(h, row[h]); } dT.Rows.Add(n); } return dT; } } }
步骤 3:创建步骤定义文件
如何创建步骤定义文件的详细信息将在“步骤定义文件”一章中详细讨论。
using System; using System.Data; using TechTalk.SpecFlow.Assist; 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 dTable = Utils.Class1.DT(t); //iterating rows foreach (DataRow r in dTable.Rows) { Console.WriteLine(r.ItemArray[0].ToString()); Console.WriteLine(r.ItemArray[1].ToString()); } } [Then(@"user should be able to login")] public void ThenUserShouldBeAbleToLogin() { Console.WriteLine("User should be able to login"); } } }
第 4 步:执行和结果
选择“用户凭证(1)功能”,然后单击“运行视图中的所有测试”。
选择“登录模块方案”,然后单击“为此结果打开附加输出”链接。
在“何时”步骤中,使用从特征文件中的表(转换为数据表)传递的数据执行场景。