1

我的赛普拉斯测试场景中有一些全局变量。

    describe('AutoLogin Test Case',function(){
        beforeEach(function(){
            Cypress.Cookies.preserveOnce('_session_id')
        })
        afterEach(function(){
            cy.get('[id="ajax_working"]',{timeout:6000}).should('not.be.visible')
        })
    
    
        it('input login info',function(){ 
            cy.visit('https://***********.******.com/')
            cy.get('[id^=user_username]')
            .type('ChrisPbacon').should('have.value','ChrisPbacon')
            cy.get('[id^=user_password]')
            .type('welcome123').should('have.value','welcome123')
            cy.contains('Sign In Now').click()
        })
})

测试用例完成后,系统将检查“after each”函数并查找“ajax_working”......我只需要在显示的“it”测试中跳过该检查,但我仍然需要运行它程序的其余部分。我不想在每次测试中都写后果函数,因为它很麻烦而且总体上不干净。有人有任何提示吗?

4

1 回答 1

0

不确定这是否适合您的问题,但您可以实现此目的的方法之一是将 afterEach 钩子与测试包装在相同的上下文中,而不是使用 describe 声明,如下所示:

beforeEach(function () {
    cy.log("Before each hook");
});

describe('AutoLogin Test Case',function() {

    afterEach(function () {
        cy.log("After each hook");
    });

    it('Some test', function () {
        cy.log("Your first test case")
    });

});

describe('AutoLogin Test Case 2',function() {
    it('Some other test', function() {
        cy.log("Your second test case");
    });
});

请注意具有您预期行为的输出,在两个测试中都调用了 beforeEach 钩子,而仅在第一次测试中调用了 afterEach 钩子:

在此处输入图像描述

于 2021-09-23T08:17:00.620 回答