如何从赛普拉斯的beforeEach中删除所有cy.route

时间:2020-04-23 12:06:00

标签: javascript testing cypress e2e-testing

我正在为公司中的应用程序创建很多测试。在每次测试之前,我需要创建一个状态进行处理,并且状态始终是相同的,因此我先用自己的方法创建了一些路由,然后在之前创建的support / index.js文件中创建了每个类似的

beforeEach(() => {
    cy.server();
    cy.mockSearches(SHORTEN_SEARCHES); // this only creates mocks
    cy.loginAdmin();
});

在99%的测试中,它可以正常工作,但是有一个测试需要在真实数据上运行。我该怎么办?有没有一种方法可以忽略beforeEach全局?我想我可以将这部分代码移到每个测试之前,但这是代码重复吗?还是我应该用空响应覆盖此cy.route?

1 个答案:

答案 0 :(得分:0)

您可以在您的beforeEach()中添加一个条件以在设置之前退出:

beforeEach(() => {
    if (shouldUseRealData) return;
    cy.server();
    cy.mockSearches(SHORTEN_SEARCHES); // this only creates mocks
    cy.loginAdmin();
});

如有关environment variables的文档所述,您可以用不同的方式设置环境变量。一种方法是在调用cypress run时在命令行中进行设置:

cypress run --env use_mock=true

然后您将其与Cypress.env('use_mock')一起使用。

beforeEach(() => {
    if (Cypress.env('use_mock')) {
        cy.server();
        cy.mockSearches(SHORTEN_SEARCHES); // this only creates mocks
        cy.loginAdmin();
    }
});