gpt4 book ai didi

javascript - 使用 Mocha 在 Nightwatch 中循环测试

转载 作者:行者123 更新时间:2023-12-02 15:00:09 28 4
gpt4 key购买 nike

我正在使用 Nightwatch 和 Mocha 来编写一些自动化(动态)测试。动态是指我想动态加载一些用于循环测试用例的数据。请参阅下面的代码。我正在努力解决三件事:

  1. 假设我的 testArray 中最终有 3 个项目。当它在测试(it)中循环时,它只打开一个浏览器,转到 google.com 并且不会启动其他 2 个浏览器。我确信这与我遇到的一些异步问题有关,但我不知道如何解决它。
  2. 从#1 开始,第一个(也是唯一打开的浏览器)在结束时甚至没有关闭。使用 did() 的某些方面再次出现异步问题。
  3. 理想情况下,我想在测试运行时动态命名它。即,而不是 it("foo"... 我想要么围绕 it 循环并传入标题(我无法正常工作),要么以某种方式在测试(it)代码中动态更改它.

请注意,我不需要将 Mocha 与 Nightwatch 一起使用,但我开始使用 Mocha 的动态测试功能(新测试用例),但我也无法使其工作。

这是我的代码的缩小版本。

var testArray = [];

describe('createArray', function() {
before(function(client, done) {
// do some async operations within a loop and create testArray entries
// loop {
testArray.push(foo); // let's say I end up with 3 items.
// }
done();
});

it('foo', function(client) {
console.log(testCaseArray);
testCaseArray.forEach(function(testCase) {
client.url("http://www.google.com"); // let's say here I would eventually want to have something like client.url("http://....." + testCase.value)
});
});
});

提前致谢。

最佳答案

你是对的,你需要异步处理测试用例。可以这样做:

it('foo', function(client, done) {
var testsLeft = testCaseArray.length;
function onTestComplete() {
testsLeft--;
if (testsLeft === 0)
done();
}
testCaseArray.forEach(function(testCase) {
client.url("http://" + testCase.value, onTestComplete);
});
});

我不熟悉 Nightwatch,因此您可能需要像这样使用 onTestComplete:

client.url("http://" + testCase.value).end(onTestComplete);

此外,我意识到这是处理异步回调的一种非常冗长的方式。通常,对于这种类型的情况,使用类似 CallbackManager 之类的内容会很有帮助。因此您无需手动跟踪剩余的测试数量。

更新:

您还可以根据 Mocha documentation 动态生成测试。 .

关于javascript - 使用 Mocha 在 Nightwatch 中循环测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35485764/

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