2016-04-20 7 views
2

Ich habe eine Excel-Tabelle, die Daten für Testfälle enthalten und jeder Testfall ist durch einen Spaltenwert say Skript-ID getrennt und ich möchte nur Zeile mit Skript ID = 1 laden . Wie können wir dies erreichen mit DataTable.ImportSheet-Methode als diese Methode alle Zeile mit Skript-ID = 2 und 3Wie Daten von Excel zu UFT basierend auf Bedingung importieren

importieren

Ich versuche auch mit Abfragezeichenfolge und das funktioniert gut, aber ich möchte dies durch DataTable.ImportSheet erreichen Methode (Projektbedingungen)

Dank Aman

Antwort

1

Nun, importiert die DataTable.ImportSheet Methode einfach ein ganzes Blatt (eine Lasche/Blatt aus einer Excel-Datei). Soweit ich weiß, wird es Ihnen nicht erlauben, nur einige Zeilen davon zu importieren.

jedoch ...

Sie können den Code einrichten, um nur die Zeile, die Sie wollen verarbeiten. Sie möchten Ihre Schleife programmgesteuert statt automatisch steuern, also zuerst: Legen Sie Ihre Aktion (oder Ihren Test) so fest, dass nur OneIteration ausgeführt wird. Wenn die Aktion auf "In allen Zeilen ausführen" eingestellt ist, wird nur das Blatt betrachtet, das die letzte Zeile mit Daten enthält, und dann werden so viele Iterationen ausgeführt. Wenn Sie also ein Blatt mit Daten in den ersten vier Zeilen und einige Daten in Zeile 100 haben, versucht QTP, 100 Iterationen auszuführen, obwohl die Daten leer sind.

Um die Iterationseinstellungen für eine Aktion festzulegen, können Sie mit der rechten Maustaste auf die Aktion im Flussdiagramm klicken und Aktionsaufrufeigenschaften auswählen. Um Iterationen für einen ganzen Test festzulegen, klicken Sie mit der rechten Maustaste auf das Start-Oval, wählen Sie Eigenschaften, wählen Sie Ausführen, und suchen Sie dort die Einstellung.

Als nächstes erstellen Schleife ähnlich dies:

'ImportedSheetTabName = the name of the tab in Excel, you specified it during importsheet 

for Row = 1 to DataTable.GetSheet(ImportedSheetTabName).GetRowCount 

    DataTable.GetSheet(ImportedSheetTabName).SetCurrentRow Row 

    if DataTable("script_ID",ImportedSheetTabName) = "1" 'based on your question 
    'do stuff with the row 
    'this is where you would put ALL of the work to be done... 
    'it can be as long as you need. 
    else 
    'do nothing. this will ignore all rows that are not Script ID = 1 
    end if 

next 

Was ich in meinem ganzen Blätter tatsächlich tun (um mit QTP verwendet werden) ist eine Spalte umfassen „Daten“ genannt, die einfach ein X hat in wenn die Zeile Datenblattdaten enthält. Ich kann buchstäblich alles einfügen, was ich will zwischen den Zeilen, einschließlich anderer Formeln und Berechnungen (Datenaufbau Sachen), Kommentare, Listen, etc ... und weiß, dass all das ignoriert wird, weil ich meine Schleifen von Hand kontrolliere.

2

Sie können dies auch tun, indem Sie die Datentabelle zuerst manuell erstellen.

Zum Beispiel

Set myxl = createobject("excel.application") 
myxl.Application.Visible = true 
myxl.Application.DisplayAlerts = false 
myxl.Workbooks.Open DataSheetFilePath 
set sheet = myxl.ActiveWorkbook.Worksheets("SheetName") 
Row=sheet.UsedRange.Rows.Count 
Col=sheet.UsedRange.Columns.Count 
'Create Data table first 
Datatable.AddSheet ("DataTableName") 
Set ParameterTable = datatable.GetSheet("DataTableName") 
'Add cols from Excel 
For j = 1 To Col 
    ParameterTable.AddParameter sheet.cells(1,j).value,"" 
Next 

'Begin search in Excel 
'Suppose the ID column will be 1 
DataTableRow = 1 
For i = 1 to Row 
    If sheet.cells(i,1).value = 1 Then 
     'Add row record to datatable 
     ParameterTable.SetCurrentRow (DataTableRow) 
     For j = 1 to Col 
     ColName = sheet.cells(1,j).value 
     Val = sheet.cells(i,j).value 
     datatable.Value(ColName,"DataTableName") = Val 
     DataTableRow = DataTableRow+1 
     Next 
    End If 
Next 
+0

Also, im Grunde, Sie verwenden ein Excel-Automatisierungsobjekt um das Blatt zu öffnen und die -relevant- Daten in die QTP Datatable kopieren, indem Sie direkt auf die Datentabelle zu schreiben. Das ist großartig, denn wenn Sie die DataTable dann exportieren, wenn Sie fertig sind, erhalten Sie eine angepasste Version Ihres Datenblattes. Sie könnten also alles in eine Funktionsbibliothek kapseln, um das QTP-Datenblatt vor dem eigentlichen Test zu laden. Klar eine fortgeschrittene Technik :) –