如何在功能和场景中共享相同的场景概要示例

  • 本文关键字:功能 共享 c# cucumber specflow
  • 更新时间 :
  • 英文 :


目标:-我希望在要素文件的各个步骤中使用这些数据。这不是一步到位的,基本上我想用示例中的所有数据来运行这个场景。

Scenario Outline:
Given my table for app1
Examples:
|data|
|123 |
|567 |
Scenario Outline:
Given my table for app2
Examples:
|data|
|123 |
|567 |

我不想在场景和功能中复制相同的示例,因为如果数据发生变化,需要更多的返工,而且这不是一个好的做法。我如何在规格流中实现这一点

TL;DR不可能在多个功能之间共享示例表。

说明:使用要素文件的主要目的是可读性。场景必须对所有团队成员都很清楚,并且应该起到文档的作用。在一个地方定义的一个表和在多个要素文件中引用的一个表格会降低场景的可读性。你必须记住定义场景!=编写代码时,此处不应应用规则"DRY"。

如果你很固执,必须这样做,你可以做以下事情:

  • 将数据保存在例如excel文件中
  • 实现一个"BeforeTestRun"钩子,将数据加载到TestThreadContext中
  • 在场景中使用存储在TestThreadContext中的数据

在我看来,我们应该在Script文件夹中创建一个函数来定义或准备数据,而不是一步一步地创建数据,这是手动的,我不喜欢这样。示例:

public class SpecFlowForFeatureSteps {
[Given(@"I create table by name (.*)")]  
public void ICreateTableByName(string tableName) {
// TODO something in there with table name
ScenarioContext.Current.Pending();
}
}

谢谢。

最新更新