我正在为公司中的应用程序创建很多测试。在每次测试之前,我需要创建一个状态进行处理,并且状态始终是相同的,因此我先用自己的方法创建了一些路由,然后在之前创建的support / index.js文件中创建了每个类似的
beforeEach(() => {
cy.server();
cy.mockSearches(SHORTEN_SEARCHES); // this only creates mocks
cy.loginAdmin();
});
在99%的测试中,它可以正常工作,但是有一个测试需要在真实数据上运行。我该怎么办?有没有一种方法可以忽略beforeEach全局?我想我可以将这部分代码移到每个测试之前,但这是代码重复吗?还是我应该用空响应覆盖此cy.route?
答案 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();
}
});