- SpecFlow 教程
- SpecFlow - 首页
- SpecFlow - 简介
- 测试驱动开发
- 行为驱动开发
- SpecFlow - Visual Studio 安装
- Visual Studio 扩展安装
- SpecFlow - 项目设置
- 其他项目依赖项
- SpecFlow - 运行器激活
- SpecFlow - HTML 报告
- SpecFlow - 绑定测试步骤
- SpecFlow - 创建第一个测试
- 配置 Selenium Webdriver
- SpecFlow - Gherkin
- SpecFlow - Gherkin 关键字
- SpecFlow - 特性文件
- SpecFlow - 步骤定义文件
- SpecFlow - 钩子
- SpecFlow - 背景说明
- 使用示例进行数据驱动测试
- 不使用示例进行数据驱动测试
- 表格转换为数据表
- 表格转换为字典
- 带 CreateInstance 的表格
- SpecFlow - 带 CreateSet 的表格
- SpecFlow 有用资源
- SpecFlow - 快速指南
- SpecFlow - 有用资源
- SpecFlow - 讨论
SpecFlow - 将表格转换为数据表
表格经常与场景大纲混淆。场景大纲适用于整个测试,而表格仅适用于其定义下的单个步骤。
但是,需要构建编程逻辑来理解数据,然后才能将其整合到我们的测试中。示例关键字用于场景大纲,但数据表不需要任何关键字。
SpecFlow 中的 Table 提供多种方法,让我们看看如何通过表头将 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包将 Table 转换为数据表。我们将在项目中创建一个新文件夹,并在其中包含一个 C# 文件。右键单击 SpecFlow 项目,然后单击“添加”。
选择新建文件夹选项。
将文件夹命名为Utils。
右键单击创建的新文件夹,然后选择添加选项。单击类。
在搜索框中键入C# 类并搜索。从搜索结果中选择类选项,然后单击添加继续。
项目文件夹结构
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)特性,然后单击运行视图中的所有测试。
选择登录模块场景,然后单击打开此结果的附加输出链接。
该场景已执行,数据来自特性文件 When 步骤中表格(转换为数据表)传递的数据。
广告