【问题标题】:Describe positive test in gherkin language用小黄瓜语言描述阳性测试
【发布时间】:2015-01-20 12:38:52
【问题描述】:

我们正在尝试按照规范以小黄瓜语言的示例方法来表达我们的要求。功能的一部分是检查在某些情况下会失败,否则应该是肯定的。所以我们有很多这样的场景:

 Given a <condition>         //condition changes between scenario
 When the check is performed
 Then the result is negative

因此,在描述了检查可能失败的所有条件之后,我们需要一个积极的场景,例如:

Given ...                // this is what we're missing. 
When the check is performed
Then the result is positive

我们想不出一个好的方法来制定这个。 请注意,这是可以由不同产品扩展的通用功能的一部分,因此我们不能只写:“上述条件均不适用”

你们中的任何人能想出一个类似于Given there are no conflicting conditions 的表述,但更可测试吗?

【问题讨论】:

    标签: bdd acceptance-testing gherkin specifications scenarios


    【解决方案1】:

    也许你可以这样做

    When the check is performed
    Then it works
    

    如果场景能讨论是什么,那就更好了。假设我们正在登录。我将从

    开始
    When I sign in
    Then I should be signed in
    

    然后将其扩展到悲伤的路径

    Given my email is invalid
    When I sign in
    Then I should not be signed in
    

    以上所有内容可能都需要一些背景知识,例如

    Given I am registered.
    

    你不必对每个场景都有一个给定的

    这是 Given 的示例实现

    module RegistrationStepHelper do
      def create_registered_user
        # return a user who is registered and can sign in
        ...
      def sign_in_as(user)
    end
    World RegistrationStepHelper
    
    "Given I am registered" do 
       @i=create_registered_user
    end
    
    When "I sign in" do
      sign_in_as: @i
    end
    
    ...
    

    对于一个稍微扩展的示例see here

    【讨论】:

    • 我会使用“当我提交有效凭据时,然后我应该登录”而不是“当我登录时,然后我应该登录”,这将使测试不那么模棱两可。还。我不会提及电子邮件,因为从测试的角度来看,它们是不同的实体,而我只是使用“当我提交无效凭据时,我不应该登录”。完全同意你关于背景的看法。
    • 但是如果不描述有效的含义,我就不能谈论“有效凭据”。这正是问题所在,有效的是那些与其他场景不冲突的人。 @diabolist,我不明白我怎么能活出给定的,因为这意味着When-Then 子句对于任何先决条件总是正确的。
    • 有效凭据与您的登录方式有关。虽然我明白了这一点,但我认为没有必要这样做,但当您具有设置有关登录的上下文的功能时。正如我所说的那样需要某种 Given 来确定你是谁。我将编辑答案并添加一个示例实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多