[英]Mocha using for loop for data driven test always runs last iteration
使用三個腳本。 嘗試從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 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();
}
MyTest.js
var mocha = require('mocha');
var global_var = require('./Global_Setup').Setup;
var Form = {
FormLogin: function () {
describe ('Loop Suite', function() {
it('Loop', function () {
console.log('row index!!' + global_var.testRow);
//done();
});
});
}
};
module.exports.Form = Form;
Global_Setup.js
var Setup =
{
testRow: '',
};
module.exports.Setup = Setup;
Loop Suite的輸出為:
行索引!! 1
行索引!! 1
Mocha將在開始運行任何測試之前執行整個循環 。 因此,當您的循環結束時, global_var.testRow
具有循環設置的最新值,然后您的測試開始,並且它們都讀取相同的值。 (我對Mocha執行測試代碼的順序有一個一般性的解釋 。)
不必依賴全局變量,而傳遞您希望每個測試使用的值。 這是一個例子:
新Trial.js
:
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);
}
新的MyTest.js
:
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;
請注意,您不需要將mocha
導入到測試文件中。 上面的代碼不再需要Global_Setup.js
文件。
我已經修改了FormLogin
以接受參數,並且Call_Test
現在使用此參數調用FormLogin
。
這是我得到的輸出:
i = 0
i = 1
Test Suite
Loop Suite
row index!! 0
✓ Loop
Loop Suite
row index!! 1
✓ Loop
2 passing (19ms)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.