2015-01-22 1 views
0

Ниже представлен дизайн нашей 3-уровневой платформы QTP. Мой вопрос:сможет ли QTP выйти из текущего тестового сценария и запустить следующий тестовый скрипт (через сценарий главного драйвера) в случае многоуровневой архитектуры?

  1. QTP сможет выйти из текущего тестового сценария и запустить следующий тестовый скрипт (через скрипт главного драйвера), если ошибка возникает в Tier2 или Tier3?
  2. Есть ли какие-либо проблемы с кодом для мастер-скрипта, который я написал ниже. Мастер-скрипты выполняют индивидуальный тестовый скрипт и записывают состояние результата, время начала и время окончания в словарь, который, в свою очередь, записывается обратно на лист excel.
  3. Ребята вы видите какие-либо другие ограничения/улучшения этого дизайна? Пожалуйста, помогите!

Master Driver Script – Tier1 
 

 
Function Master() 
 
\t ‘Take the contents of the excel sheet which stores the path of the test scrip  to be executed, status, start time and end time in a record set 
 
    Do While Not oRecSet.EOF 
 
\t \t \t dicResultSet.Add rCnt, CreateObject (“Scripting.Dictionary”) 
 
\t \t \t For Each oField In oRecSet.Fields 
 
\t \t \t \t dicResultSet (rCnt).Add oField.Name, oField.Value 
 
\t \t \t \t ‘Execute individual scripts 
 
\t \t \t \t If oField.Name = “Path” Then 
 
\t \t \t \t \t msQTPapp.Open oField.Value, True 
 
             Set qtTestScript = msQTPapp.Test 
 
             qtTestScript.Settings.Run.OnError = "NextStep" 
 
             strStartTime = Now 
 
             qtTestScript.Run 
 
             qtTestScript.Close 
 
             strEndTime = Now 
 
\t \t \t \t End If 
 
\t \t \t \t ‘Write the status of the last run script in the dictionary object 
 
\t \t \t \t If oField.Name = “Status” Then 
 
        dicResultSet (rCnt).Item (“Status”)=_     qtTestScript.LastRunResults.Status 
 
\t \t \t \t End If 
 
\t \t \t \t ‘Write the start time of the last run script in the dictionary  object 
 
\t \t \t \t If oField.Name = “StartTime” Then 
 
        icResultSet (rCnt).Item (“StartTime”) = strStartTime 
 
\t \t \t \t End If 
 
\t \t \t \t ‘Write the end time of the last run script in the dictionary object 
 
\t \t \t \t If oField.Name = “EndTime” Then 
 
        dicResultSet (rCnt).Item (“EndTime”) = strEndTime 
 
        qtTestScript = Nothing 
 
\t \t \t \t End If 
 
\t \t \t Next 
 
\t \t \t oRecSet.MoveNext 
 
\t \t \t rCnt= rCnt+1 
 
\t \t Loop 
 
     'Write the status, start time and end time of the individual test scripts in an excel sheet 
 
     'Close the rec set and connection 
 
End Function 
 

 
Test Script: Action – Tier2 
 

 
‘Associate the individual test script with Environmental files, OR and other function library 
 
Function Test1() 
 
\t ‘Call L1 from Function lib 
 
\t ‘Call L2 from Function lib 
 
End Function 
 

 
Function Library– Tier3 
 

 
Function L1() 
 
\t ‘Actual task is getting done here 
 
End Function 
 
. 
 
. 
 
Function Ln() 
 
\t ‘Actual task is getting done here 
 
End Function

+0

Как мы можем знать, что существует нулевой код, и нулевое описание того, что вы имеете в виду под «уровнем», и нулевое описание того, как ваш «главный» скрипт вызывает другие скрипты, в вопросе? – TheBlastOne

+0

С «Tier» я имел в виду уровень, то есть поток от Tier1 (master sctipt) до Tier2 (тестовые скрипты) до (библиотеки функций). Мастер-скрипты будут извлекать путь к сценариям из листа excel (Test Suite.xls), используя Excel в качестве базы данных, и он будет храниться в словаре. MDS будет выполнять сценарии тестирования один за другим с помощью AOM. Время начала и окончания отдельных скриптов будет храниться в словаре и в конце MDS то же самое будет записано в листе Test suite.xls. – Jaidev

+0

Мы до сих пор не писали полный код, мы все еще думаем о дизайне перед фактическим кодом. Так что просто подумали перекреститься, если мы пойдем в правильном направлении или нет? – Jaidev

ответ

0

я сосредоточусь на вопрос 1. Если вы хотите задать другие вопросы, пожалуйста, два отдельных вопроса. Однако я опасаюсь, что они будут закрыты из-за слишком широкой или в основном основанной на мнениях.

Краткий ответ: Да.

Тест, вызванный через AOM, может выйти, например, с помощью ExitTest и , вызывающий может продолжить выполнение другого теста. Это точно такой же процесс, как и с тестами, которые не выходят явно, а просто выполняют их нормальный поток выполнения, а затем законно завершают.

Даже если тест прерван из-за ошибки времени выполнения, сценарий вызывающего абонента восстановит контроль и может продолжать работать так же, как после успешного тестового прогона.