Ausführen von datengesteuerten Tests
Stellen Sie sicher, dass Sie wissen, wie Sie datengesteuerte Tests erstellen und wie Sie Tests mit TAEF ausführen, bevor Sie mit Tipps und Tricks zum Ausführen von DataDrivenTests mit TAEF beginnen. Möglicherweise ist es hilfreich, den Arbeitsspeicher darüber zu aktualisieren, wie die Auswahlabfrage auch mit TAEF funktioniert.
In diesem Abschnitt geht es speziell um die Ausführung tabellenbasierter datengesteuerter Tests, aber das gleiche Grundprinzip gilt auch für PICT-basierte und WMI-basierte datengesteuerte Tests.
Wenn Sie nur alle Ihre Tests ausführen möchten, einschließlich datengesteuerter Tests, gibt es keinen Unterschied davon, wie Sie sie normalerweise mit TAEF ausführen würden. Betrachten wir ein Beispiel für die gemeinsame Ausführung von CPP\DataDrivenExample und CSharp\DataDrivenExample mit TAEF. Denken Sie daran, dass TAEF standardmäßig Tests außerhalb des Codes ausführt. Wenn Sie sie inproc ausführen möchten, verwenden Sie den Schalter "/inproc".
TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll
Sehen Sie sich die XML-Dateien und Headerdateien an, die die Metadaten angeben. Führen Sie nur die datengesteuerten Tests mit der Priorität = 1 wie folgt aus:
TE.exe Examples\*.Tests.dll /select:"@DataSource=* And @Priority=1"
Denken Sie daran, dass Metadaten, die auf Zeilenebene in der XML-Datei angegeben sind, die auf der TestMethod-Erstellungsebene angegeben sind, überschreibt.
Lassen Sie uns etwas mehr über die Leistungsfähigkeit der datengesteuerten Testausführung mit TAEF erkunden. Angenommen, Sie möchten nur die dritte Zeile in der Funktion FirstTable() erneut bereitstellen. Dazu können Sie den Index der Zeile verwenden, die 2 ist (Index beginnt bei 0):
TE.exe Examples\CPP.DataDriven.Example.dll /select:"@Name='*FirstTable*' and @Data:index=2"
Beachten Sie, dass das Auswahlkriterium jetzt über einen neuen Namespace "@Data:" verfügt, der speziell für datengesteuerte Tests verwendet werden kann. Wenn Sie den obigen Test ausführen, werden Sie feststellen, dass anstelle der üblichen "#index", die bei datengesteuerten Tests an Testnamen angefügt wird, "#Black" an den Testnamen angefügt wurde – dies ist die für diese Zeile angegebene spezielle Metadaten "Name". Details finden Sie unter Angeben von Metadaten auf Zeilenebene . Trotz dieses speziellen Namens können Sie trotzdem den Namen verwenden. Die Indexauswahl kann einen langen Weg gehen, um einen Zeilenbereich für einen wirklich großen Datensatz auszuwählen. Wenn Sie beispielsweise (hypothetisch – nicht im Beispiel) einen datengesteuerten Test mit 100 Zeilen (maximaler Index = 99) haben und nur Zeilen mit einem Index größer als 10 und kleiner als 20 ausführen möchten, können Sie dies jetzt einfach wie folgt angeben:
TE.exe Examples\*.Tests.dll /select:"@Name='*MyDataDrivenTest*' and @Data:index > 10 and @Data:index < 20"
Oft möchten Sie basierend auf einem bestimmten Datenwert erneut pro verwenden und müssen nicht die Probleme beim Auffinden des Indexes durchlaufen. In diesem Fall können Sie den Namespace "@Data:" erneut verwenden. Sagen Sie nun im systemeigenen Beispiel für Komponententests (siehe Erstellen von datengesteuerten Tests), sie möchten nur die Fälle ausführen, wenn "Theme" "AeroBasic" ist.
TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll /select:"@Data:Theme='AeroBasic'"
Dies wird auf der Konsole wie folgt angezeigt:
StartGroup: WEX::TestExecution::Examples::DataDrivenTests::SecondTable#2 [Process: 3588; Thread: 4584]
I am in second table.
Theme supplied as AeroBasic
EndGroup: WEX::TestExecution::Examples::DataDrivenTests::SecondTable#2 [Passed]
Summary: Total=1, Passed=1, Failed=0, Blocked=0, Not Run=0, Skipped=0
Sie können /listproperties auch für datengesteuerte Tests verwenden, um die Datensätze und die Metadaten (Kombination von Metadaten auf Testmethodenebene und Zeilenebene) für den datengesteuerten Test anzuzeigen. Also:
TE.exe Examples\CSharp.DataDriven.Examples.dll /listproperties
listet alle Methoden (datengesteuert und andernfalls) zusammen mit den verfügbaren Metadaten und Datenwerten auf verschiedenen Ebenen auf.
Sehen Sie sich die Überschreibung von Metadaten auf Zeilenebene an, das Angeben von Arrayparametertypen und einfache datengesteuerte Beispielbeispiele, die mehr Einblicke bieten.