簡體   English   中英

將相同的隨機數傳遞給賽普拉斯的所有測試

[英]Passing a same random number to all tests in Cypress

所以我有兩個測試——Test1.spec.js 和 Test2.spec.js,我希望每次測試運行時都應該生成一個隨機數,並且在兩個規范中都應該使用相同的隨機數。 我在support/index.js下為此寫了一個簡單的Math.random() function

Cypress.config('UniqueNumber', `${Math.floor(Math.random() * 10000000000000)}`)

在我寫的測試中:

cy.get('locator').type(Cypress.config('UniqueNumber'))

當我嘗試使用賽普拉斯應用程序npm cypress open然后運行所有規范來執行測試時,會生成一個隨機數,並將相同的數字正確傳遞給兩個規范文件。 但是,當我嘗試使用 CLI npx cypress run為兩個規范文件運行測試時,會傳遞不同的隨機數。

如果使用 CLI 執行測試,我做錯了什么?

因此,根據cypress docs support/index.js每次運行每個規范文件之前都會運行,所以我的上述方法無效,因為每次運行都會生成一個新值。 所以我遵循的下一個方法是在第一次測試中將值寫入fixtures/data.json文件並在整個測試中使用它。 這樣,每次運行都會生成一組新值並將其保存在夾具文件中,然后在整個測試套件中為該測試運行使用相同的值。 以下是我寫入fixtures/data.json文件的方式:

    const UniqueNumber = `${Math.floor(Math.random() * 10000000000000)}`

    cy.readFile("cypress/fixtures/data.json", (err, data) => {
        if (err) {
            return console.error(err);
        };
    }).then((data) => {
        data.username = UniqueNumber
        cy.writeFile("cypress/fixtures/data.json", JSON.stringify(data))
    })
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM