使用摩卡在守夜人中循环测试
Looping through tests in Nightwatch using Mocha
我正在使用Nightwatch和Mocha来编写一些自动(动态)测试。动态是指我想动态加载一些用于循环测试用例的数据。请参阅下面的代码。我正在为三个项目而苦苦挣扎:
- 假设我的测试数组中最终有 3 个项目。当它在测试(it)中循环时,它只打开一个浏览器,转到 google.com,并且不会启动其他两个浏览器。 我确定这与我遇到的一些异步问题有关,但我不知道如何解决它。
- 从#1继续,第一个(也是唯一打开的浏览器)甚至没有在结论时关闭。 再次是使用 done() 的某些方面的异步问题。
- 理想情况下,我想在测试运行时动态命名测试。 即,代替它("foo"...我想要么在它周围循环并传入标题(我无法正常工作),要么以某种方式在测试(it)代码中动态更改它。
请注意,我不需要在Nightwatch中使用Mocha,但我开始走上使用Mocha的动态测试功能(新的TestCase)的道路,但我也无法让它工作。
这是我代码的缩小版本。
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);
});
});
我不熟悉守夜人,所以你可能需要使用这样的onTestComplete
:
client.url("http://" + testCase.value).end(onTestComplete);
另外,我意识到这是处理异步回调的一种非常冗长的方式。通常,对于这种情况,使用类似 CallbackManager 的东西会很有帮助,这样你就不需要手动跟踪还剩下多少测试。
更新:
您还可以根据 Mocha 文档动态生成测试。
相关文章:
- 如何在e2e测试中循环通过行-列
- 得到"TypeError:对象不是函数“”;在forEach循环中使用超级测试/超级代理时
- 在循环内进行测试
- 使用 for 循环中的函数测试字符串时,我一直陷入无限循环
- 循环这个.props.children我如何测试他们的类型
- 使用摩卡在守夜人中循环测试
- 嵌套在 Node 中的循环.js与 Mocha 测试框架一起
- 如何在循环中测试就绪状态和状态以避免 else 分支
- 使用 For 循环干燥量角器点击测试
- 是否可以使用 for 循环进行 DRY 量角器测试?*VaR 即将出现未定义*
- 如何测试我的 json 的任何属性是否具有特定的子属性,没有循环
- JavaScript:regexp循环内外测试的不同结果
- 茉莉:我怎么能声明一个循环'其'而不是'期望'用于测试有角度的工厂
- 在没有循环的情况下测试一组元素之间的html5数据相等性
- 可以't循环进行javascript测试
- 守夜人在for循环中执行命令时出现故障
- 在简单的循环测试中,Javascript比Classical C快100,为什么
- 为什么要在循环中进行hasOwnProperty()测试
- Qnit点击触发测试导致无限刷新循环
- 我如何使用javascript循环测试图像加载的时间