簡體   English   中英

如何在賽普拉斯中使用不同的數據集多次運行測試?

[英]How to run a test multiple times with different sets of data in cypress?

在自動化網站時,我需要在 cypress 中使用不同的測試數據集多次運行測試用例(它阻止)。

請考慮以下示例:

it('example test',  () => {

    //first run
    getOnDefaultForm.typeUserName('Name1');
    getOnDefaultForm.typePassword('Pass1');
    getOnDefaultForm.clickSubmit();
    
    //second run
    getOnDefaultForm.typeUserName('Name2');
    getOnDefaultForm.typePassword('Pass2');
    getOnDefaultForm.clickSubmit();
    
    //third run
    getOnDefaultForm.typeUserName('Name3');
    getOnDefaultForm.typePassword('Pass3');
    getOnDefaultForm.clickSubmit();

});

我怎樣才能在賽普拉斯實現這一目標?

我想你需要看看這個 repo: https://github.com/cypress-io/cypress-example-recipes/tree/master/examples/fundamentals__dynamic-tests或者只是搜索這個網站,這不是第一個是時候有人問這個問題了。

通常,您可以將it包裝在一個循環中。 實際上,它看起來像這樣:

const testData = [
    {
        name: 'Name1',
        password: 'Pass1'
    },
    {
        name: 'Name2',
        password: 'Pass2'
    },
    {
        name: 'Name3',
        password: 'Pass3'
    }
]

testData.forEach((credentials) => {
    it('example test', () => {
        getOnDefaultForm.typeUserName(credentials.name);
        getOnDefaultForm.typePassword(credentials.password);
        getOnDefaultForm.clickSubmit();
    })
});

也可以將數據放在 fixtures 文件夾中的json文件中,並將其導入到 spec 文件的頂部。

這種方法在賽普拉斯 12.5.0 版中仍然有效。

治具

[
  { "name": 'Name1', "password": 'Pass1' },
  { "name": 'Name2', "password": 'Pass2' },
  { "name": 'Name3', "password": 'Pass3' }
]

測試

const testData = require('../fixtures/test-data.json')

testData.forEach((credentials) => {
  it('example test for ' + credentials.name, () => {
    getOnDefaultForm.typeUserName(credentials.name);
    getOnDefaultForm.typePassword(credentials.password);
    getOnDefaultForm.clickSubmit();
  })
})

我沒有足夠的聲譽在評論中回答@pavelsaman,但是使用 cypress 12.4.1 將其包裝在forEach循環或Cypress._.times循環中不起作用。 賽普拉斯只是簡單地忽略測試並表現得好像它們不存在一樣

暫無
暫無

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

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