Мне нужна помощь. Мне нужно создать тестовые примеры из Excel, формат которых ниже:
**Current NextState Function Type**
GREETING-1,repeat,PMSG
REPEAT,CallerType,PMSG
CALLERTYPE,XferBridges(DTMF:1),ClaimMenu(DTMF:2),XferLine2(DTMF:3),XferLine2(DTMF:4),Menu
CLAIMMENU,RejectMenu(DTMF:1),XferLine2(DTMF:2),Menu
REJECTMENU,NotCovered(DTMF:1),Terminated(DTMF:2),NMCard(DTMF:3),NMGroup(DTMF:4),Refill(DTMF:5),NoDrugNDC(DTMF:6),XferLine2(DTMF:2),Menu
NOTCOVERED,RejectMenu(DTMF:1),Menu
TERMINATED,XferLine2(DTMF:1),Menu
NMCARD,XferLine2(DTMF:1),Menu
NMGROUP,XferLine2(DTMF:1),Menu
REFILL,XferLine2(DTMF:1),Menu
NODRUGNDC,XferLine2(DTMF:1),Menu
XFERBRIDGES,STOP,PMSG
XFERLINE2,STOP,PMSG
THANKYOU,GoodBye,PMSG
GOODBYE,STOP,PMSG
Инструмент сгенерирует n тестовых случаев. Пожалуйста, подскажите мне, какой код я должен написать, который может генерировать тестовый пример ниже:
Case 1: Greeting-1 -> Repeat -> CallerType, Press DTMF 1 ->XferBridges ->STOP
Case 2: Greeting-1 -> Repeat -> CallerType, Press DTMF 2 ->ClaimMenu, Press DTMF 1 -> RejectMenu, Press DTMF 1 ->NotCovered, Press DTMF1 -> RejectMenu -> STOP( from entering infinte into loop)
Case 3: Greeting-1 -> Repeat -> CallerType, Press DTMF 2 ->ClaimMenu, Press DTMF 1 -> RejectMenu, Press DTMF 2 -> Terminated, Press DTMF 1 ->XferLine2 ->STOP
Case 4: Greeting-1 -> Repeat -> CallerType, Press DTMF 2 ->ClaimMenu, Press DTMF 1 -> RejectMenu, Press DTMF 3 -> NMCard, Press DTMF 1 ->XferLine2 ->STOP
**.**
**.**
и так далее
Вы, наверное, поняли, что я здесь делаю. Попытка создать тестовые примеры для каждого потока вызовов, если следующим состоянием является PMSG, затем добавить его в тот же массив, но если следующим состоянием является MENU, то создать новый массив (что означает новый тестовый пример), который будет проходить через все параметры DTMF и его соответствующее следующее состояние и так далее
Я использовал рекурсивный цикл для получения вывода, но он дает неправильные значения.
Код:
function generateTestCaseList(nextState) {
var incCount = 1;
var positionInt = findNextState(nextState);
var tempStoredArray = allState[positionInt];
if(tempStoredArray[0].toLowerCase() == menuName.toLowerCase())
{
incCount = menuPostion;
f = true;
}
else if(tempStoredArray[0].toLowerCase() == nextMenuName.toLowerCase())
incCount = nextMenuPostion;
var tempStr = getState(tempStoredArray, incCount);
var tempArr = tempStr.toLowerCase().split("%");
nextState = tempArr[1];
parentStr = parentStr + tempArr[0];
var cntInfi = parentStr.toLowerCase().split(nextState).length -1;
if(cntInfi == 2)
{
return parentStr;
}
else if(nextState != "stop")
{
var pstInt = findNextState(nextState);
var tempArr = allState[pstInt];
if(tempArr[tempArr.length -1] == "Menu" && f == true)
{
nextMenuName = tempArr[0];
var tempMenuPsx= tempArr.length - 2;
//WScript.Echo("tempMenuPsx"+nextMenuName+tempMenuPsx);
for(var k=tempMenuPsx;k >0 ;k--)
{
nextMenuPostion = k;
//WScript.Echo("nextMenuPostion"+nextMenuPostion);
WScript.Echo("parentStr"+parentStr);
var temp = generateTestCaseList(nextState);
childStr = childStr +temp;
resultList.push(childStr);
childStr = "";
}
}
else
{
generateTestCaseList(nextState);
}
}
else
{
return parentStr;
}
}
function findNextState(nextState) {
for(var l=0;l<allState.length;l++)
{
if(allState[l][0].toLowerCase()==nextState.toLowerCase())
return l;
}
return 0;
}
function getState(tempArray,l) {
var tempStr = tempArray[0];
if(tempArray[2] =="GETV")
tempStr = tempStr +";Voice: Say Something;"+tempArray[2]+";$%"+tempArray[1];
else if(tempArray[2] =="PMSG")
tempStr = tempStr +";"+tempArray[2]+";$%"+tempArray[1];
else
tempStr = tempStr +";DTMF:"+l+";"+tempArray[tempArray.length -1]+";$%"+tempArray[l];
return tempStr;
}
result( "$" здесь разделитель следующего состояния):
1. greeting-1;pmsg;$repeat;pmsg;$callertype;dtmf:4;menu;$xferline2;pmsg;$
2. greeting-1;pmsg;$repeat;pmsg;$callertype;dtmf:3;menu;$xferline2;pmsg;$
3. greeting-1;pmsg;$repeat;pmsg;$callertype;dtmf:2;menu;$claimmenu;dtmf:2;menu;$xferline2;pmsg;$claimmenu;dtmf:1;menu;$rejectmenu;dtmf:7;menu;$xferline2;pmsg;$rejectmenu;dtmf:6;menu;$nodrugndc;dtmf:1;menu;$
4. greeting-1;pmsg;$repeat;pmsg;$callertype;dtmf:2;menu;$claimmenu;dtmf:2;menu;$xferline2;pmsg;$claimmenu;dtmf:1;menu;$rejectmenu;dtmf:7;menu;$xferline2;pmsg;$rejectmenu;dtmf:6;menu;$nodrugndc;dtmf:1;menu;$rejectmenu;dtmf:1;menu;$notcovered;dtmf:1;menu;$rejectmenu;dtmf:7;menu;$
5. greeting-1;pmsg;$repeat;pmsg;$callertype;dtmf:2;menu;$claimmenu;dtmf:2;menu;$xferline2;pmsg;$claimmenu;dtmf:1;menu;$rejectmenu;dtmf:7;menu;$xferline2;pmsg;$rejectmenu;dtmf:6;menu;$nodrugndc;dtmf:1;menu;$rejectmenu;dtmf:1;menu;$notcovered;dtmf:1;menu;$rejectmenu;dtmf:7;menu;$rejectmenu;dtmf:6;menu;$nodrugndc;dtmf:1;menu;$
Выходные данные содержат все параметры DTMF в одном потоке вызовов, который изношен. Любой вклад будет большим подспорьем.