如何在cypress Cucumber中编写Given,When,Then等可以使用的通用步骤定义

Posted

技术标签:

【中文标题】如何在cypress Cucumber中编写Given,When,Then等可以使用的通用步骤定义【英文标题】:How to write a common step definition which can be used by Given, When, Then etc. in cypress Cucumber 【发布时间】:2021-09-08 02:11:05 【问题描述】:

我最近将 cucumber 与 cypress 集成并添加了 cucumber Full support plugin (VS CODE) 以在我们开发功能文件时获得步骤建议。通常使用 java-cucumber 体验即使我们在编写功能文件时定义了 Given 下的步骤,即使我们正在编写 Then 也会弹出步骤建议场景(工具:想法)。 但是在这种情况下,如果我们用 Then

定义一个步骤
Then("User click on Contact Us",() => 
    cy.get('#basic-navbar-nav > div > a:nth-child(6)').click()
)

当我们编写功能时,只有当我们以 然后

开始功能时,才会弹出步骤建议
Feature: Login

    Scenario Outline: Sample

        Given User go to TestSite
        Then User click on Contact Us

我想知道我们是否可以编写一个对所有 Given、When、Then 等通用的步骤 def。在 java-cucumber Intellij-Idea 支持中,我认为我们有一个 * 选项 insted Given、When、then 等. cypress 中是否有解决方法?

【问题讨论】:

你找到解决办法了吗? 没有伙伴。因此,作为一种解决方法,我所做的是对所有步骤定义使用一个单词“Given”。每当我正确的步骤定义时,我都会使用给定的,然后我会以一种可读的方式更改该功能。这有点烦人,但现在这是我在这个案例上的最佳选择。 【参考方案1】:

您可以使用 defineStep 实现通用步骤定义,如下所示:

defineStep("User click on Contact Us",() => 
  cy.get('#basic-navbar-nav > div > a:nth-child(6)').click()
)

就像Given,When,Then一样可以从cypress-cucumber-preprocessor/steps导入

import  defineStep  from 'cypress-cucumber-preprocessor/steps';

您可以在功能文件中使用此步骤,然后作为 Given、When 或 Then 步骤:

Feature: Login
    Scenario Outline: Sample
        Given User click on Contact Us
        When User click on Contact Us
        Then User click on Contact Us

【讨论】:

在这种情况下,我们需要使用 * 调用功能中的步骤 我期待得到步骤建议,而不管它的定义方式如何。我认为这是 VS Code 插件的问题,不是吗? 在功能文件中,您可以简单地使用上述步骤定义为 Given、When 或 Then 步骤,就像您通常将其明确定义为其中之一一样。【参考方案2】:

我之前没有使用过那个插件,所以我无法专门回答这个问题,但是为了在我的赛普拉斯测试中获得更类似于小黄瓜的语法,我通常使用类似于以下示例的内容和嵌套描述。

context('Given ...', () => 
  describe('When ...', () => 
    it('Then ...', () => 
     ...
    )
  )
)

【讨论】:

不,伙计,如果我们这样做,测试将不是黄瓜测试,我认为我们不能使用这些方法编写特征文件。它将作为正常的柏树测试运行,但在左侧面板中,它看起来像正常的黄瓜测试。当我们尝试编写功能时,我希望弹出步骤定义建议,而不管它是在“Given or When or Then ... etc.”下编写的。

以上是关于如何在cypress Cucumber中编写Given,When,Then等可以使用的通用步骤定义的主要内容,如果未能解决你的问题,请参考以下文章

使用 cypress-cucumber-preprocessor 将现有的 cypress 测试转换为黄瓜风格的 bdd。第二个场景没有被选中

Cypress BDD:Cypress Cucumber 处理器:无法运行步骤定义 .js 文件

在 Cucumber 中编写测试定义的正确语法是啥?

如何使用 Cucumber 编写 Feature 级别的验收测试?

如何在 Cypress 中访问 baseURL 的值

如何使用cucumber搭建ui自动化框架