Report Casi di Test + Step

 

Il report che andiamo a trattare è molto richiesto. Andremo a creare un file excel con poche informazioni sul Test + le info sugli Step quali:

  • Percorso
  • Nome Test
  • Descrizione
  • Commenti
  • Autore
  • Data di Creazione
  • Step
  • Descrizione Step
  • Risultato Atteso Step

 

Le difficoltà che incontriamo in questo riepilogo sono 2:

 

  • Identificare i Test da una certa Cartella in avanti in Test Plan
  • Estrarre gli Step collegati ai Test

 

 

Il primo punto si può smarcare così:

  1. Tramite la Sub MoveToSubject è possibile reperire il NodeID.
  2. Eseguire query per recuperare l'AL_ABSOLUTE_PATH dalla tabella ALL_LISTS
  3. Estrarre la lista degli ID (AL_ITEM_ID) il cui AL_ABSOLUTE_PATH inizia con lo stesso del punto precedente
  4. Estrarre tutti i casi di test che hanno TS_SUBJECT "in" ID della lista del punto 3

 

Il secondo punto invece prevede l'utilizzo delle OTA per accedere, tramite l'oggetto Test, alla DesignStepFactory e farsi ritornare la lista degli Step.

 

______________________________________________________________________

 

Spiegazione ed Implementazione

 

Per l'estrazione è necessario:

  • creare una variabile globale di modulo che contenga l'ID della Subject dove siamo posizionati (MoveToSubject) che dovrà essere messa a -1 quando ci posizioniamo su un Test (Test_MoveTo)
  •  creare un nuovo pulsante (vedi sezione WorkFlow Script Editor) nel modulo Test Plan
  • Inserire nella ActionCanExecute il richiamo alla Sub Test_ReportTestsSteps dalla ActionName act_ReportTestsSteps
  • Creazione Sub Test_ReportTestsSteps

 

1. Dichiarazione variabile ID_Subject a livello globale di modulo Test Plan

Dim ID_Subject

 

2. Inserimento codice per caricare la variabile ID_Subject

Sub MoveToSubject(Subject)

On Error Resume Next

ID_Subject = Subject.NodeID

On Error Goto 0

End Sub

 

3. Distruzione della variabile quando ci si posiziona su un caso di test

Sub Test_MoveTo

On Error Resume Next

ID_Subject = -1

On Error Goto 0

End Sub

 

4. Richiamo Sub da ActionCanExecute

Function ActionCanExecute(ActionName)

On Error Resume Next

Dim Res

Res = True

 

if ActionName = "act_ReportTestsSteps" then

   Test_ReportTestsSteps

end if

 

ActionCanExecute = Res

On Error Goto 0

End Function

 

5. Creazione Sub di Estrazione

Sub Test_ReportTestsSteps

On Error Resume Next

Dim MyComm, RecSet, strAbsPath, strQuery, ID_Folder, r, RecSet2 

 

'Se ID_Subject è -1 significa che non sono posizionato su una cartella. Esco

if ID_Subject = -1 then

   msgbox "Non sei posizionato su una folder", vbExclamation + vbSystemModal, "QC - Errore Posizionamento Cartella"

   exit Sub

end if

 

strQuery = "Select AL_ABSOLUTE_PATH From ALL_LISTS " & _

               "Where AL_ITEM_ID = " & ID_Subject

 

'Creazione oggetto Command

set MyComm = TDConnection.Command

'Caricamento Query

MyComm.CommandText = strQuery

'Esecuzione e salvataggio Query

Set RecSet = MyComm.Execute

'Posizionamento al primo record

RecSet.First

'Salvataggio dato in strAbsPath

strAbsPath = RecSet.FieldValue(0)

Set RecSet = Nothing

 

'Estrazione di tutti gli ID delle Folder che sono nell'alberatura della cartella

'selezionata

MyComm.CommandText = "Select AL_ITEM_ID From ALL_LISTS " & _

"Where AL_ABSOLUTE_PATH LIKE '" & strAbsPath & "%'"

'Esecuzione Query

Set RecSet = MyComm.Execute

 

'Controllo che ci sia qualcosa nel RecordSet

if RecSet.RecordCount > 0 then

   'Ok, significa che esistono delle sottocartelle. Mi carico tutta la lista degli ID

   'per poi creare la query sulla tabella TEST per estrarmi tutti gli ID dei Test

 

   'var contenente tutti gli ID delle Folder. La inizializzo con l'ID della Subject

   'dove sono posizionato

   ID_Folder = str(ID_Subject) & ", "    

 

   RecSet.First

   do while Not(RecSet.EOR)

       ID_Folder = ID_Folder & RecSet.FieldValue(0) & ", "

       RecSet.Next

   loop

      

   'tolgo l'ultimo spazio e l'ultima virgola

   ID_Folder = left(ID_Folder, len(ID_Folder) - 2)

 

   'Creo query per estrazione dei casi di test

   strQuery = "Select TS_TEST_ID From TEST " & _

                  "WHERE TS_SUBJECT IN (" & ID_Folder & ")"

 

   'carico nella CommandText di MyComm la query

   MyComm.CommandText = strQuery

   'Esecuzione Query e Salvataggio in RecSet2

   set RecSet2 = MyComm.Execute

 

   'Controllo che sia ritornato qualcosa 

   if RecSet2.RecordCount > 0 then

        RecSet2.First

 

        'Creazione oggetti Excel

        set objXLS = CreateObject("Excel.Application")

        objXLS.Visible = False

        set objWkb = objXLS.Workbooks.Add

        set objWks = objWkb.Worksheets(1)

        objWks.Name = "Report Test+Step"

  

        'scrivo intestazione file excel

        objWks.Cells(1,1).Value =  "Percorso"

        objWks.Cells(1,2).Value =  "Nome Test"

        objWks.Cells(1,3).Value =  "Descrizione"

        objWks.Cells(1,4).Value =  "Commenti"

        objWks.Cells(1,5).Value =  "Autore"

        objWks.Cells(1,6).Value =  "Data di Creazione"

        objWks.Cells(1,7).Value =  "Nome Step"

        objWks.Cells(1,8).Value =  "Descrizione Step"

        objWks.Cells(1,9).Value =  "Risultato Atteso Step"

        

        r = 2

 

        'Ciclo per tutti gli ID dei Test, mi istanzio l'oggetto Test ed estraggo tutte

        'le informazioni

        do while Not(RecSet2.EOR)

            set MyTest = TDConnection.TestFactory.Item(RecSet.FieldValue(0))

            'Controllo se il Test ha almeno uno step

            if MyTest.DesStepsNum = 0 then

               ' Recupero il path del test

               objWks.Cells(r,1).Value = TDConnection.TreeManager.NodeByID(MyTest.Field("TS_SUBJECT")).Path

               objWks.Cells(r,2).Value = MyTest.Name

               objWks.Cells(r,3).Value = MyTest.Field("TS_DESCRIPTION")

               objWks.Cells(r,4).Value = MyTest.Field("TS_DEV_COMMENTS")

               objWks.Cells(r,5).Value = MyTest.Name("TS_RESPONSIBLE")

               objWks.Cells(r,6).Value = MyTest.Name("TS_CREATION_DATE")

               

               'incremento la riga

               r = r + 1                

            else

               'mi carico l'elenco degli steps

               set StepList = MyTest.DesignStepFactory.NewList("")            

 

               'Ciclo per tutti gli step

               for each elStep in StepList                                         

                    ' Recupero il path del test

                    objWks.Cells(r,1).Value = TDConnection.TreeManager.NodeByID(MyTest.Field("TS_SUBJECT")).Path

                     objWks.Cells(r,2).Value = MyTest.Name

                     objWks.Cells(r,3).Value = MyTest.Field("TS_DESCRIPTION")

                     objWks.Cells(r,4).Value = MyTest.Field("TS_DEV_COMMENTS")

                     objWks.Cells(r,5).Value = MyTest.Field("TS_RESPONSIBLE")

                     objWks.Cells(r,6).Value = MyTest.Field("TS_CREATION_DATE")

                     objWks.Cells(r,7).Value = elStep.Name                       

                     objWks.Cells(r,8).Value = elStep.Field("DS_DESCRIPTION")

                     objWks.Cells(r,9).Value = elStep.Field("DS_EXPECTED")

                    

                     'incremento la riga

                     r = r + 1

               next

               set StepList = Nothing

           end if

            set MyTest = Nothing            

            RecSet2.Next

        loop

 

        'Salvo foglio Excel

        objWkb.SaveAs ("c:\temp\TestAndSteps_" & split(date,"/")(2) & split(date,"/")(1) & split(date,"/")(0) & ".xls"

        'Chiudo ed Esco dal file excel

        objWkb.Close

        objXLS.Quit 

 

        set objXLS = Nothing

        set objWkb = Nothing

        set objWks = Nothing

   end if

 

   set RecSet2 = Nothing

   

end if 

 

set RecSet = Nothing

set MyComm = Nothing

 

On Error Goto 0

End Sub

 

_______________________________________________________________________

 

Pag: <    <<