如何访问Specflow中另一个功能的值

时间:2013-04-11 10:27:55

标签: specflow

我有两个功能文件feature1.feature和feature2.feature。在feature1.feature中,我正在创建一个字段值并将其添加到FeatureContext.Current。是否有可能从feature2.feature访问该值?

我知道一旦特定功能运行结束,FeatureContext类就会被清除。是否有其他方法可以访问两个不同的功能文件之间的值?

请提出一些建议。

提前致谢。

2 个答案:

答案 0 :(得分:2)

我强烈反对这种设置。这有几个原因:

  • 技术原因:SpecFlow不保证它运行任何场景功能的顺序。你不能相信它总是一样的。
  • 商业原因:您编写的场景首先是一种沟通工具。你希望他们自己容易理解。当您谈论特定场景时,您不必阅读该功能中的其他场景,以了解此特例的作用。它阻碍了你在场景中的沟通。

为了便于阅读,我建议您在每个方案中重复信息。如果你在每个场景中得到大量重复信息,你可以Background-feature of Gherkin。这些步骤在特征文件中的每个场景之前运行一次,并且可用于执行重复的操作。

如果您发现自己处于需要在场景之间来回传递信息的情况,您应该退后一步并重新考虑您的场景。真的是这两种不同的场景吗?或者它可能只是一个?你怎么能更清楚地表达出来?

我希望这很有用。

答案 1 :(得分:0)

我从未尝试过,但也许您可以使用[BeforeFeature]和[AfterFeature]属性从featurecontext获取值并将其设置在下一个功能的上下文中。