首页 > 解决方案 > 我可以在黄瓜的每个功能文件中运行一次之前的钩子吗?

问题描述

我有一堆功能文件,每个文件都有一堆场景。根据具体情况,前 2 或 3 个步骤对于每个场景都是相同的。

所以在一个 .feature 文件中,我有 10 个场景,我正在运行 20 个步骤,我可以只运行一次并执行所有测试。

用黄瓜可以吗?使用后台为每个场景执行步骤,我想为每个功能文件执行此操作。我所有场景的上下文。

顺便说一句,我正在使用 cypress-cucumber-preprocessor?但我认为是一样的。

标签: cucumbercypresscypress-cucumber-preprocessor

解决方案


您是否尝试过使用 before/after ?就我而言,我想跳过在每个功能之前添加登录/注销步骤的部分。因此,我在 support/stepdefinitions/global.js 中执行了以下操作

 before(() => {
  cy.log(
    "This will run once before all tests, you can use this to for example start up your server, if that's your thing"
  );
  cy.visit(Cypress.env("url") + "/login");
  cy.fixture("login").then((inputdata) => {
    cy.log("Login to application");
    LoginPage.changeLanguage("en");
    LoginPage.login(inputdata.username, inputdata.password, inputdata.pin);
  });
  cy.on("uncaught:exception", (err) => {
    // expect(err.message).to.include('Ignoring error for now');
    return false;
  });
});

after(() => {
  cy.log("Logout from application");
  HomePage.clickUserDropdown();
  HomePage.clickLogout();
});


推荐阅读