Javascript Mocha使用for循环进行数据驱动测试总是运行最后一次迭代
使用三个脚本。尝试从excel中读取数据,将其分配给所有测试脚本都可以访问的全局变量。希望为for循环的每个迭代运行测试,但它总是转到最后一个迭代 Trial.jsJavascript Mocha使用for循环进行数据驱动测试总是运行最后一次迭代,javascript,mocha.js,Javascript,Mocha.js,使用三个脚本。尝试从excel中读取数据,将其分配给所有测试脚本都可以访问的全局变量。希望为for循环的每个迭代运行测试,但它总是转到最后一个迭代 Trial.js var mocha = require('mocha'); var other_script = require('./MyTest.js'); var global_var = require('./Global_Setup').Setup; describe ('Test Suite', function() { for (
var mocha = require('mocha');
var other_script = require('./MyTest.js');
var global_var = require('./Global_Setup').Setup;
describe ('Test Suite', function() {
for (var i = 0; i < 2; i++) {
global_var.testRow = i;
//read data for row 1 and set it in global_var variables
Call_Test(i);
}
});
function Call_Test (i) {
console.log('i = ' + i);
other_script.Form.FormLogin();
}
Global_Setup.js
var Setup =
{
testRow: '',
};
module.exports.Setup = Setup;
循环套件的输出为:
行索引!!一,
行索引!!1摩卡将在开始运行任何测试之前执行整个循环。因此,当循环结束时,global_var.testRow具有循环设置的最新值,然后测试开始,它们都读取相同的值。我对Mocha执行测试代码的顺序有一个简单的描述
不要依赖全局变量,而是传递希望每个测试使用的值。下面是一个例子:
New Trial.js:
请注意,您不需要将mocha导入测试文件。上面的代码不再需要Global_Setup.js文件
我修改了FormLogin以接受一个参数,Call\u Test现在使用这个参数调用FormLogin
以下是我得到的输出:
i = 0
i = 1
Test Suite
Loop Suite
row index!! 0
✓ Loop
Loop Suite
row index!! 1
✓ Loop
2 passing (19ms)
非常感谢。其他_script.Form.FormLogini;如果我有另一个脚本读取excel中的第二个选项卡,那么我必须传递personal_info_script.Form.FormPersonalInfoi并从第二个选项卡读取数据。如果我有第三个脚本,它使用第一个选项卡中的一些数据,并根据第一个选项卡中该行的数据读取第三个选项卡中的列。。。我必须阅读第三个脚本中的第一个和第三个选项卡。我试图避免从excel中多次读取测试套件的选项卡。
var other_script = require('./MyTest.js');
describe ('Test Suite', function() {
for (var i = 0; i < 2; i++) {
//read data for row 1 and set it in global_var variables
Call_Test(i);
}
});
function Call_Test (i) {
console.log('i = ' + i);
// Pass the value here.
other_script.Form.FormLogin(i);
}
var Form = {
// Accept a parameter here.
FormLogin: function (i) {
describe ('Loop Suite', function() {
it('Loop', function () {
console.log('row index!! ' + i);
//done();
});
});
}
};
exports.Form = Form;
i = 0
i = 1
Test Suite
Loop Suite
row index!! 0
✓ Loop
Loop Suite
row index!! 1
✓ Loop
2 passing (19ms)