Il report che andiamo a trattare è molto richiesto. Andremo a creare un file excel con poche informazioni sul Test + le info sugli Step quali:
Le difficoltà che incontriamo in questo riepilogo sono 2:
Il primo punto si può smarcare così:
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:
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
_______________________________________________________________________