【问题标题】:Can I call one feature file into some another feature file present in same suite (solution for calling scenarios will also do)我可以将一个功能文件调用到同一套件中存在的另一个功能文件中吗(调用场景的解决方案也可以)
【发布时间】:2016-03-01 00:04:25
【问题描述】:

我有一个测试套件,其中我有多个 BDD 场景存在于不同的功能文件中,如下所述,

**FeatureFile1**

Scenario: User is performing 123 funtionality

Given A,B,E,F,G
When User does A
Then Output is Aresult
When User does B
Then Output is Bresult
When User does E
Then Output is Eresult
When USer does F
Then Output is Fresult
When User does G
Then Output is Gresult


**FeatureFile2**

Senario: User is performing 4567 functionality

Given M,N,A,B,E,F,G,P,Q
When User does M
Then Output is Mresult
When User does N
Then Output is Nresult
When User does A
Then Output is Aresult
When User does B
Then Output is Bresult
When User does E
Then Output is Eresult
When USer does F
Then Output is Fresult
When User does G
Then Output is Gresult
When User does P
Then Output is Presult
When User does Q
Then Output is Qresult



**FeatureFile3**

Senario: User is performing 890 functionality
Given U,V,A,B,E,F,G,X,Y,Z
When User does U
Then Output is Uresult
When User does V
Then Output is Vresult
When User does A
Then Output is Aresult
and User does B
Then Output is Bresult
When User does E
Then Output is Eresult
When USer does F
Then Output is Fresult
When User does G
Then Output is Gresult
When User does X
Then Output is Xresult
When User does Y
Then Output is Yresult
When User does Z
Then Output is Zresult

如果您仔细观察,我的第一个功能文件在我的第二个和第三个文件中完全重复(在步骤之间)。

有什么方法可以在其他文件中使用单行调用我的第一个功能文件(FeatureFile2 理解它必须调用 FeatureFile1,对于其他情况也是如此)

这些将减少我的复制和粘贴,而且我的其他场景(冗长的场景)看起来紧凑且美观。由于我是 BDD 和 C# 的新手,希望得到帮助。我试图寻找解决方案,但找不到任何具体的东西。

如果我可以在 FeatureFile2 中调用 FeatureFile1 中存在的场景...那也可以。

应该写什么代码????

使用 Specflow 的框架 || C# 编码语言 || BDD 语言小黄瓜

【问题讨论】:

    标签: c# automation bdd specflow gherkin


    【解决方案1】:

    我通常解决这种情况的方法是创建一个包含其他几个步骤的步骤,然后在第二个和第三个功能中调用它。您可以在 this answer

    中看到这种方法的示例

    【讨论】:

    • public class MySteps: Steps //Inheriting this base class is vital or the methods used below won't be available { [Given("I have created an order")] public void CreateOrder() { Given("I want to create a sales order"); Given("I open the sales order page"); Given("I click the add new order button"); Then("a new sales order is created"); } } 我可以从父类继承函数,但是我不能直接在上面的给定中写下给定的语句。我做得不对吗?
    • 由于我从 When 和 Then(Expected Results) 语句中传递我的所有命令/数据,我需要一些可以获取 When/Then 语句并从这些语句中传递内联参数的东西(它们是使用继承在子类中调用),然后将调用映射方法。
    • @surajgupta 我不确定是什么问题。请清楚地问另一个问题,为什么这对您不起作用,并举例说明,我会尝试回答。完成后请在此处发表评论并附上链接
    • 嗨@samholder.. 我已经添加了另一个question 更多细节请看一下。
    【解决方案2】:

    我们使用 vstest 控制台。 例如, 当场景没有准备数据时, 第一步,我们运行数据准备的特殊功能 How do I launch application one from another in C#?

    关于控制台运行的参数是这个 How do you run SpecFlow scenarios from the command line using MSTest?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      相关资源
      最近更新 更多