【问题标题】:Given/When/Then - Can I use a Given "statement" in more than one operation say Given and When bothGiven/When/Then - 我可以在多个操作中使用 Given“语句”吗?
【发布时间】:2016-01-06 10:46:47
【问题描述】:

假设我得到了带有给定步骤的 BDD 功能文件,

Given User is logged in as administrator
When some functionality line
Then some functionality line

我想在其他情况下使用“用户以管理员身份登录”作为 When 语句,我该怎么做..

我试着写了,

[Given,When(@"User is logged in as administrator")] 
public void abc(){
//my operation
}

specflow 允许我使用 (cntrl+空格键) 以这种方式编写,但如果我尝试导航,它只会导航到“当用户以管理员身份登录时”

它只是导航到你写的最后一个值 [Given,When("..")]。在这里,它导航到When..

由于在某些情况下,我怎样才能使它对这两种语句都起作用,

administrator is logged in 声明是先决条件,但在某些情况下,

我必须登录,这是我需要执行的操作,因此还需要编写与“When”语句相同的语句

有什么方法可以使用与 Given and When 相同的语句?

提前致谢

【问题讨论】:

    标签: c# automation bdd acceptance-testing gherkin


    【解决方案1】:

    首先,我想检查一下你是否真的需要那个“何时”。

    如果您实际上并未编写自定义登录功能,请考虑完全删除“何时”场景。登录,一旦编写,很少更改,并且很容易与其他功能分开。手动测试它然后不管它。不过,可以使用该功能为其他场景设置登录帐户。

    如果您将登录步骤用作更大范围的一部分,并且有多个时间,您可能希望找到一种方法将您尝试做的事情作为一个步骤,并在其中调用登录步骤那。一般场景只有一个When。

    如果这些都不适用,那么,好吧,你需要一个用户主动登录的场景。登录的行为很有趣,你想提供一个例子。

    从语言的角度来看,我不希望看到 Given 的措辞与When 相同。

    Given 的想法是,你如何到达那里并不重要。该行为对于场景来说并不重要。该步骤描述了存在的上下文。用户已登录。他们是如何登录的?谁知道?谁在乎?这不重要。

    但是,对于“何时”,该操作处于活动状态。某人或某物正在执行一个事件。用户登录

    所以,我更愿意看到这个:

    [Given(@"User is logged in as an adminstrator")]
    [When(@"User logs in as administrator")] 
    public void abc(){
        //my operation
    }
    

    连同与之匹配的步骤。这仍然可以让您暂时重用您的功能,但它也让您可以选择稍后将它们分开。这可能很重要,例如,如果登录是一个昂贵的步骤,并且您决定要在所有这些场景中重复使用已登录的帐户,而在这些场景中它只是一个 Given。

    More on English tenses and BDD here.

    【讨论】:

    • @@Lunivore ...我知道如果我们使用相同的行,那么我们可能听起来有点奇怪..登录只是为了表达一个问题..我得到了我正在寻找的 wat..谢谢很多
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    相关资源
    最近更新 更多