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