2017-03-21 3 views
2

Ich bin neu in Robot und versuche, einen datengesteuerten Testfall zu implementieren, wo ich Daten aus einer Datei lese. Die Daten sieht wie folgt aus:Datengesteuert mit Robot-Framework - Wie man PASS/FAIL in Berichten für jeden Testfall aus Datei lesen

TC1,user1,password1 
TC2,user2,password2 
TC3,user3,password3 
TC4,user4,password4 

Mein Testfall und Schlüsselwörter sind wie folgt:

*** Test Cases *** 
Login TestCase 
    ${data}= Read Data From File ${testFile} 
    Process Test Data ${data} 

*** Keywords *** 
Process Test Data 
    [Arguments] ${data} 
    : FOR ${row} IN @{data} 
    \ ${status}= Run Keyword And Return Status Perform Login ${row} 

Perform Login 
    [Arguments] ${row} 
    Login using ${row[1]} ${row[2]} 

Jetzt, während die 'Login Testfall' ausgeführt wird, der Bericht generiert zeigt

'Total 1 Pass 1 Fail 0'. 

Meine Frage ist, wie kann ich den Bericht erhalten die Pass/Fail für jede Zeile, dh

'Total N Pass X Fail Y' , where N=number of rows in data file and X+Y=N 

Ich habe versucht, die For-Schleife in "Login Testcase", aber immer noch das gleiche Ergebnis. Irgendwelche Ideen/Hilfe wird sehr geschätzt!

Update: Also habe ich versucht, die Tests zu modifizieren (ohne die Datendatei zu lesen), wie unten:

*** Settings *** 
Test Template  Perform Login 

*** Test Cases *** 
Login TestCase 
    TC1 user1 password1 
    TC2 user2 password2 
    TC3 user3 password3 
    TC4 user4 password4 

*** Keywords *** 
Perform Login 
    [Arguments] ${tc#} ${username} ${password} 
    Login using ${username} ${password} 

Während Dabei Perform Anmelden 4 mal ausgeführt wird, aber der Bericht Ausgabe zeigt noch
'Gesamt 1 bestanden 1 fehlgeschlagen 0'.

Ich bin mir nicht sicher, ob ich die Testvorlage richtig verwende und auch wie ich Daten aus einer Datei lese und diese für jede Testfalliteration verwende.

Update2:

*** Settings *** 
Test Template  Perform Login 

*** Test Cases *** 
TC1 user1 password1 
TC2 user2 password2 
TC3 user3 password3 
TC4 user4 password4 

*** Keywords *** 
Perform Login 
    [Arguments] ${username} ${password} 
    Login using ${username} ${password} 

Als ich die Testfälle auf diese Weise ändern, bekomme ich

'Total 4 Pass 3 Fail 1', which is what I expect. 

Aber in diesem Fall, ich bin nicht sicher, wie die Daten aus der Datei lesen verwenden. Bitte helfen Sie mir/teilen Sie Ihre Ideen darüber, wie ich meine Testfälle mit Datendateien füttern könnte !!

Antwort

1
+0

Vielen Dank für Ihre Antwort. Ich habe versucht, die Testvorlage zu verwenden, und es funktioniert, wenn ich die Daten in den Testfall einfüge. Ich konnte keine Möglichkeit finden, Daten aus einer Datei zu verwenden, um die Testfälle zu füllen. Einstellungen *** *** Test-Vorlage Vorlage Beispiel *** Testfälle *** Anmeldung Testfall TC1 benutzer1 password1 TC2 benutzer2 password2 TC3 user3 kennwort3 TC4 user4 password4 – mauiTester

+0

Und was Definition Ihrer ' Beispiel Beispiel? –

+0

BTW, besser, Ihre ursprüngliche Frage durch eine neue Bearbeitung zu erweitern, als Kommentar mit begrenzten Formatierungsmöglichkeiten zu verwenden. Es ist viel besser lesbar mit der richtigen Formatierung. Wie auch immer, Sie können immer noch Zitate verwenden, um ein Stück Code im Kommentar zu markieren. –

1

Ich werde versuchen, die Fragen zu beantworten, die Sie hier insgesamt gehabt haben, von Anfang an beginnen.

Der Grund, warum Ihr Test nur einen Erfolg zeigte, ist, dass Sie nur einen Test hatten. Lass mich es für dich brechen.

Jede .robot-Datei, die Sie ausführen, ist tatsächlich eine Test Suite. Jede Suite kann mehrere Tests haben, die unter *** Test Cases *** definiert sind. Jeder Testfall mehrere Keywords Optisch haben kann, sieht das wie folgt aus:

Suite 
|-Test 
| |-Keyword 
| |-Keyword 
|-Test 
|-Test 

Sie wurden zuerst einen Test mit einem Schlüsselwort ausgeführt wird, dann ein Test mit vier Schlüsselwörter. Der Test wird nur bestanden, wenn alle Keywords bestanden wurden. Sie können andere Logik hinzufügen, um sie zu bestehen, wenn keine, einige oder alle Stichwörter bestehen, aber das ist die Grundstruktur einer Robot Framework Test Suite. Die Ausgabe der Robot Framework Test Suite zeigt für jeden Test genau einen Pass/Fail an, nicht für Keyword. Im Log wird ein Pass/Fail für jedes Keyword einzeln, aber nicht in der Console-Ausgabe angezeigt.

Was aus einer Datei zu lesen, ist das ein besonders kompliziertes Problem in Robot Framework, aber eine einfachere Lösung ist eine Liste und ein Wörterbuch in einer Variablentabelle zu erstellen, wie folgt:

, dann
*** Variables *** 
@{users} = user1 user2 user3 user4 
&{passwords} = {'user1':'password1', 'user2':'password2', 'user3':'password3', 'user4':'password4'} 

in Ihre Schleife, können Sie :FOR ${user} IN @{users} verwenden und rufen Sie das Passwort mit ${passwords["${user}"]}, um nur auf das aktuelle Benutzerkennwort verweisen.

Die einzigen zwei Möglichkeiten, die ich im Basis-Robot-Framework zum direkten Lesen aus einer Datei kenne, sind ein benutzerdefiniertes Python-Schlüsselwort und die Betriebssystembibliothek. Es ist keine vollständige Programmiersprache, eher eine spezialisierte Shell für Python.

Verwandte Themen