0

假设我有 Feature1.feature 和 Feature2.feature 文件。首先,我有步骤:

Scenario: Test scenario1
Given   I Open the app
When    I Click on Tab1

在第二个文件中,我有:

Scenario: Test scenario2
Given   I Open the app
When    I Click on Tab2

在 step1.js 文件中的 step_definitions 文件夹下:

Given("I open the app", () => {
  cy.visit("/home");
});

When("I Click on Tab1", () => {
  cy.get('[title="Tab1"]'.click();
});

在 step_definitions 文件夹下,我们有多个 js 文件(由每个测试用例分隔)。那么对于第二种情况,在 step2.js 中我是否需要再次定义 Open app 步骤?:

Given("I open the app", () => {
  cy.visit("/home");
});

或者它在steps_definition下的所有文件中全局查找?那么我只需要开始:

When("I Click on Tab2", () => {
  cy.get('[title="Tab2"]'.click();
});

但是如果多个用户正在处理测试用例并且他们不小心在不同的文件中定义了相同的步骤,例如

在一个文件中

Given("I open the app", () => {
  cy.visit("/home");
});

在其他文件中

Given("I open the app", () => {
  cy.visit("/news");
});

正如我所读到的,每个场景都应该是独立的。但是,如果每个场景都有相同的步骤?我们只需要在一个文件中定义它们一次。但如果其他人正在处理该文件,它可能会破坏我的场景。

4

1 回答 1

2

如果多个场景有两个步骤,则应使用通用步骤:

可重用的步骤定义 我们还有一种方法可以创建可重用的步骤定义。把它们放在 cypress/integration/common/

示例:cypress/integration/common/i_see_string_in_the_title.js

import { Then } from "cypress-cucumber-preprocessor/steps";

Then(`I see {string} in the title`, (title) => {
  cy.title().should('include', title)
})

取自https://www.npmjs.com/package/cypress-cucumber-preprocessor

于 2021-05-21T15:40:48.660 回答