如何跳过Cypress中某些规范文件的support/index.js

如何跳过Cypress中某些规范文件的support/index.js,cypress,Cypress,对于某个规范文件(access.spec.js),是否可以跳过我的index.js支持文件中的beforeach函数 index.js // This example support/index.js is processed and // loaded automatically before your test files. beforeEach(function () { cy.request('POST', 'https://exampleURL.com', { email

对于某个规范文件(access.spec.js),是否可以跳过我的index.js支持文件中的
beforeach
函数

index.js

// This example support/index.js is processed and
// loaded automatically before your test files.

beforeEach(function () {
  cy.request('POST', 'https://exampleURL.com', {
    email: 'email',
    password: 'password'
  }).then((response) => {
    cy.setCookie('accessToken', response.body.AccessToken);
  });

  cy.setCookie('email', 'email');
  cy.setCookie('environment', '3');
  cy.setCookie('name', 'name');
}
it("it should send user back to login screen when AccessToken is missing", () => {
  // Code here
});
access.spec.js

// This example support/index.js is processed and
// loaded automatically before your test files.

beforeEach(function () {
  cy.request('POST', 'https://exampleURL.com', {
    email: 'email',
    password: 'password'
  }).then((response) => {
    cy.setCookie('accessToken', response.body.AccessToken);
  });

  cy.setCookie('email', 'email');
  cy.setCookie('environment', '3');
  cy.setCookie('name', 'name');
}
it("it should send user back to login screen when AccessToken is missing", () => {
  // Code here
});

从传统的角度来看,support/index.js中每个块之前的
应该只包含适用于所有测试规范的代码。如果逻辑只适用于某些测试而不适用于其他测试,则不应将其置于support/index.js

试图覆盖Cypress打算如何使用support/index.js是对框架的操作,而不是对框架的操作

随后,在所有需要它的测试中,在每个
逻辑之前复制该的一种替代方法是创建一个,如下所示:

Cypress.Commands.add('login', () => {
  cy.request('POST', 'https://exampleURL.com', {
    email: 'email',
    password: 'password'
  }).then((response) => {
    cy.setCookie('accessToken', response.body.AccessToken);
  });

  cy.setCookie('email', 'email');
  cy.setCookie('environment', '3');
  cy.setCookie('name', 'name');
})
beforeEach(function() {
  cy.login();
});
…然后,在需要此功能的规范中,您可以在每个块之前使用更简单的
,如下所示:

Cypress.Commands.add('login', () => {
  cy.request('POST', 'https://exampleURL.com', {
    email: 'email',
    password: 'password'
  }).then((response) => {
    cy.setCookie('accessToken', response.body.AccessToken);
  });

  cy.setCookie('email', 'email');
  cy.setCookie('environment', '3');
  cy.setCookie('name', 'name');
})
beforeEach(function() {
  cy.login();
});

但是,考虑到您的access.spec.js测试与缺少的
accessToken
有关,您不会在该特定测试中使用每个
之前的
块。相反,将登录代码复制到该测试中,并使用Instead of(它会命中您的实际端点),这样您就可以得到一个不会返回
accessToken
的响应。从传统的角度来看,support/index.js中的
每个
块之前的
应该只有适用于所有测试规范的代码。如果逻辑只适用于某些测试而不适用于其他测试,则不应将其置于support/index.js

试图覆盖Cypress打算如何使用support/index.js是对框架的操作,而不是对框架的操作

随后,在所有需要它的测试中,在每个
逻辑之前复制该
的一种替代方法是创建一个,如下所示:

Cypress.Commands.add('login', () => {
  cy.request('POST', 'https://exampleURL.com', {
    email: 'email',
    password: 'password'
  }).then((response) => {
    cy.setCookie('accessToken', response.body.AccessToken);
  });

  cy.setCookie('email', 'email');
  cy.setCookie('environment', '3');
  cy.setCookie('name', 'name');
})
beforeEach(function() {
  cy.login();
});
…然后,在需要此功能的规范中,您可以在每个
块之前使用更简单的
,如下所示:

Cypress.Commands.add('login', () => {
  cy.request('POST', 'https://exampleURL.com', {
    email: 'email',
    password: 'password'
  }).then((response) => {
    cy.setCookie('accessToken', response.body.AccessToken);
  });

  cy.setCookie('email', 'email');
  cy.setCookie('environment', '3');
  cy.setCookie('name', 'name');
})
beforeEach(function() {
  cy.login();
});

但是,考虑到您的access.spec.js测试与缺少的
accessToken
有关,您不会在该特定测试中使用每个
之前的
块。相反,将登录代码复制到该测试中,并使用Instead of(它会命中您的实际端点),这样您就可以得到一个不会返回
accessToken

的响应。支持文件将针对每个规范运行。如果您想要豁免,最好有选择地选择何时在规格上使用您的
beforeach
。支持文件将针对每个规格运行。如果您想要豁免,最好有选择地选择何时在规格上使用您的
beforeach