Cypress+Cucumber分支断言:根据所选账户类型验证创建结果
解决Cucumber+Cypress中根据前置步骤验证账户类型的问题
给你几种可行的实现方式:
方法1:用全局变量存储选中的账户类型
在When步骤里把选中的账户类型存到全局变量,Then步骤直接拿这个变量做验证:
// 定义全局变量存储选中类型 let selectedAccountType; When("Savings account", () => { selectedAccountType = 'SAVINGS'; cy.get('#type').select(selectedAccountType); }); When("Checking account", () => { selectedAccountType = 'CHECKING'; cy.get('#type').select(selectedAccountType); }); Then("Account is created", () => { cy.get('#accountType').should('have.text', selectedAccountType); });
方法2:参数化Cucumber步骤(推荐,更简洁)
把步骤改成带参数的形式,避免重复代码,同时直接传递类型完成验证:
步骤定义代码
When("{string} account", (accountType) => { // 统一转成大写匹配下拉框选项 const upperCaseType = accountType.toUpperCase(); cy.get('#type').select(upperCaseType); }); Then("Account is created as {string}", (accountType) => { const upperCaseType = accountType.toUpperCase(); cy.get('#accountType').should('have.text', upperCaseType); });
对应的.feature文件用例
Scenario: 创建Savings账户 When "Savings" account Then Account is created as "Savings" Scenario: 创建Checking账户 When "Checking" account Then Account is created as "Checking"
方法3:用Cypress别名存储选中值
在When步骤里给选中的下拉框值设置别名,Then步骤通过别名获取值做验证:
When("Savings account", () => { cy.get('#type').select('SAVINGS').invoke('val').as('selectedAccount'); }); When("Checking account", () => { cy.get('#type').select('CHECKING').invoke('val').as('selectedAccount'); }); Then("Account is created", function() { // 这里必须用普通function,才能访问this上下文获取别名 cy.get('#accountType').should('have.text', this.selectedAccount); });
内容的提问来源于stack exchange,提问作者Devang Sanghani
相关产品推荐
相关产品推荐

