Forum Discussion
mikev
14 years agoContributor
This solution will work nicely. Might even be a fairly good case for folks moving from QTP to TC. This particular code does cause me some problems, but I'll post another thread for that.
Anyway, here is the Controller code:
And here is an example script unit:
Anyway, here is the Controller code:
//USEUNIT commonlib
//USEUNIT applib
//USEUNIT ScriptUnit1
//USEUNIT ScriptUnit2
//USEUNIT ScriptUnit3
//USEUNIT ScriptUnit4
//USEUNIT ScriptUnit5
//USEUNIT ScriptUnit6
//USEUNIT ScriptUnit7
//USEUNIT ScriptUnit8
//USEUNIT ScriptUnit9
//USEUNIT ScriptUnit10
//USEUNIT ScriptUnit11
function Controller() {
//Get the test directory so we know where our datasheet is.
var testDir = Project.Path;
var testData = testDir + "\\Default.xls";
//Set up the data drivers, specific to the sheet we want to use.
var Sheet1 = DDT.ExcelDriver(testData, "ScriptUnit1");
var Sheet2 = DDT.ExcelDriver(testData, "ScriptUnit2");
var Sheet3 = DDT.ExcelDriver(testData, "ScriptUnit3");
var Sheet4 = DDT.ExcelDriver(testData, "ScriptUnit4");
var Sheet5 = DDT.ExcelDriver(testData, "ScriptUnit5");
var Sheet6 = DDT.ExcelDriver(testData, "ScriptUnit6");
var Sheet7 = DDT.ExcelDriver(testData, "ScriptUnit7");
var Sheet8 = DDT.ExcelDriver(testData, "ScriptUnit8");
var Sheet9 = DDT.ExcelDriver(testData, "ScriptUnit9");
var Sheet10 = DDT.ExcelDriver(testData, "ScriptUnit10");
var Sheet11 = DDT.ExcelDriver(testData, "ScriptUnit11");
//Since all sheets must have the same number of rows, we can use the
//intial sheet as the EOF check. If this sheet is EOF, all of them are.
while (!Sheet1.EOF()) {
//First thing we need to do is get the Run Flag. If it's 'N' we are not
//running this iteration.
var RUN_FLAG = Sheet1.Value("RunFlag");
var myVar = Sheet1.Value("Val");
if (RUN_FLAG == "N") {
Log.Message("Skipping this iteration: " + Sheet1.Value("Val"));
}
else {
//Write a log so that we know which row we are on.
Log.Message("************** Running test " + myVar + " **************");
//Set the ScriptUnit1 values.
ScriptUnit1Tab(Sheet1);
//Set the ScriptUnit2 values.
ScriptUnit2Tab(Sheet2);
//Set the ScriptUnit3 values.
ScriptUnit3Tab(Sheet3);
//Set the ScriptUnit4 values.
ScriptUnit4Tab(Sheet4);
//Set the ScriptUnit5 values.
ScriptUnit5Tab(Sheet5);
//Set the ScriptUnit6 values.
ScriptUnit6Tab(Sheet6);
//Set the ScriptUnit7 values.
ScriptUnit7Tab(Sheet7);
//Set the ScriptUnit8 values.
ScriptUnit8Tab(Sheet8);
//Set the ScriptUnit9 values.
ScriptUnit9Tab(Sheet9);
//Set the ScriptUnit10 values.
ScriptUnit10Tab(Sheet10);
//Set the ScriptUnit9 values.
ScriptUnit11Tab(Sheet11);
}
//Increment all rows for every sheet.
Sheet1.Next();
Sheet2.Next();
Sheet3.Next();
Sheet4.Next();
Sheet5.Next();
Sheet6.Next();
Sheet7.Next();
Sheet8.Next();
Sheet9.Next();
Sheet10.Next();
Sheet11.Next();
}
} // End of Controller
And here is an example script unit:
//USEUNIT commonlib
//USEUNIT applib
function ScriptUnit1Tab(Driver){
//Set up our local variables from the Sheet1 sheet.
var var1 = Driver.Value("var1");
var var2 = Driver.Value("var2");
var var3 = Driver.Value("var3");
//Function calls to do things specific to the data in the sheet.
}//End of function