[英]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.