簡體   English   中英

使用for循環進行數據驅動測試的Mocha始終在最后一次迭代中運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM