gpt4 book ai didi

parallel-processing - 如何在单机上使用 cypress 并行运行具有不同数据集的单个测试

转载 作者:行者123 更新时间:2023-12-04 14:03:02 29 4
gpt4 key购买 nike

我在夹具文件夹中只有以下 Test.json 文件:

[
{
"searchKeyword":"cypress"
},
{
"searchKeyword":"QA automation"
},
{
"searchKeyword":"stackoverflow"
}
]

上述文件包含三个不同的数据集。

我只有下面的规范文件,它包含一个 It(测试用例),它将根据上面的输入运行多次。

Test.spec.js 文件:

describe("Run the test parallel based on the input data",() =>{

const baseUrl = "https://www.google.com/";

before("Login to consumer account", () => {

cy.fixture('Test').then(function (data) {
this.data = data;
})
});

it("Search the keyword", function () {
this.data.forEach((testData) =>{
cy.visit(baseUrl);
cy.xpath("//input[@name='q']").type(testData.searchKeyword);
cy.xpath("//input[@value='Google Search']").click();
cy.get("//ul/li[2]").should("be.visible");
});

});

});

以上代码按预期工作。但我只想使用不同的数据集并行运行上述单个测试。

示例:打开三个浏览器实例,它应该从 Test.json 文件中选取三个不同的数据并运行 Test.spec.js 文件中可用的单个测试。

我只需要为我的一个项目实现逻辑,但我无法共享更复杂的代码,这就是我创建一些虚拟测试数据和测试脚本来实现我的逻辑的原因。

有人可以分享您的想法来实现这一点。

最佳答案

并行运行多个 Cypress 实例的一种方法是通过 Module API ,这基本上是使用 Node 脚本来启动多个实例。

节点脚本

// run-parallel.js
const cypress = require('cypress')
const fixtures = require('./cypress/fixtures/Test.json')

fixture.forEach(fixture => {
cypress.run({
env: {
fixture
},
})
})

测试

describe("Run the test for given env data",() =>{

const testData = Cypress.env('fixture')
...

it("Search the keyword", function () {
cy.visit(baseUrl);
cy.xpath("//input[@name='q']").type(testData.searchKeyword);
...
});
});

等待结果

cypress.run() 返回一个 promise,因此您可以按如下方式整理结果

视频和截图很麻烦,因为它试图以相同的名称保存所有,但你可以为每个灯具指定一个文件夹

const promises = fixtures.map(fixture => {
return cypress.run({
config: {
video: true,
videosFolder: `cypress/videos/${fixture.searchKeyword}`,
screenshotsFolder: `cypress/screenshots/${fixture.searchKeyword}`,
},
env: {
fixture
},
spec: './cypress/integration/dummy.spec.js',
})
})

Promise.all(promises).then((results) => {
console.log(results.map(result => `${result.config.env.fixture.searchKeyword}: ${result.status}`));
});

关于parallel-processing - 如何在单机上使用 cypress 并行运行具有不同数据集的单个测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69407075/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com