当 JSON 夹具文件中有多个记录时,如何将 cy.fixture 与 Array 一起使用

Cyp*_*uto 3 cypress

\在其中创建了一个 Cypress Testscript 并设置为在循环中执行,因为想要在夹具 json 中使用多组测试数据执行。如果您向下并看到 cy.fixture 仅适用于第一个条目,并且测试使用 json 中的第一个条目执行两次(测试数据文件)关于如何包含数组迭代和夹具的任何帮助都会有所帮助

var Launchindex = 0;
for (Launchindex = 0; Launchindex  < 2; Launchindex ++) {

describe('Launch  testsite',() => {

    it('try login using testdata', () => {

        cy.visit('https://xyzz')
        cy.title().should('contain','title check')
    })

    it('check url', () => {

        cy.url().should('contain','xyz')

    })

    it('enter details and submit', () => { 
        //Fixture loads the testdata setup in fixtures folder , so setup testdata required before executing test script   



        cy.fixture('testdata').then(testdata  => {

            const ModuleID = testdata[0].ModuleID 
            const LoginName = testdata[0].LoginName
            const gameid = testdata[0].gameid

        cy.get('#ModuleID').type(ModuleID)
        cy.get('#LoginName').type(LoginName)
        cy.get('#gameid').type(gameid)
        cy.get('#btnSubmit').click()

        })
    })

})

}

fixture file looks somethings like this 
[
{"id": 0,"ModuleID": "xxxx","LoginName": "xxxx","gameid": "xxxx"},
{"id": 1,"ModuleID": "yyy","LoginName": "yyy","gameid": "yyyy"}
]
Run Code Online (Sandbox Code Playgroud)

Mor*_*rel 5

cy.fixture('testdata') 将在赛普拉斯执行时进行评估,因此模块顶层的循环将不起作用。

你可以这样做:

describe('Launch testsite', () => {
    it('enter details and submit', () => {
        cy.fixture('testdata').then(testdata => {
            testdata.forEach(data => {
                const ModuleID = data.ModuleID;
                const LoginName = data.LoginName;
                const gameid = data.gameid;

                cy.get('#ModuleID').type(ModuleID);
                cy.get('#LoginName').type(LoginName);
                cy.get('#gameid').type(gameid);
                cy.get('#btnSubmit').click();

                // in a real test you probably need to do some kind of assertion here
            });
        });
    });
});
Run Code Online (Sandbox Code Playgroud)