繁体   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