如何在 cypress 中使用不同的数据集多次运行测试?

Vis*_*ats 8 javascript testing automation 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();

});
Run Code Online (Sandbox Code Playgroud)

我怎样才能在赛普拉斯中实现这一目标?

Cha*_*nds 13

也可以将数据放入jsonfixtures文件夹中的文件中,然后将其导入到spec文件的顶部。

该方法在 Cypress 12.5.0 版本中仍然有效。

夹具

[
  { "name": 'Name1', "password": 'Pass1' },
  { "name": 'Name2', "password": 'Pass2' },
  { "name": 'Name3', "password": 'Pass3' }
]
Run Code Online (Sandbox Code Playgroud)

测试

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();
  })
})
Run Code Online (Sandbox Code Playgroud)


pav*_*man 9

我认为你需要看看这个仓库: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();
    })
});
Run Code Online (Sandbox Code Playgroud)