如何在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 文件