Testautomatisierung mit Batch-Dateien:
-
02-07-2019 - |
Frage
Ich habe folgendes Layout für meine Testsuite:
TestSuite1.cmd:
- Führen Sie mein Programm
- Überprüfen seiner Rückkehr Ergebnis
- Wenn das Rücker nicht 0 ist, wandelt die Fehlerausgabe in Text- und das Skript abbrechen. Wenn es gelingt, schreiben Erfolg.
In meiner einzigen .cmd-Datei, nenne ich mein Programm etwa 10-mal mit verschiedenen Eingängen.
Das Problem ist, dass das Programm, das ich 10-mal laufen mehrere Stunden in Anspruch nimmt jedes Mal ausgeführt werden.
Gibt es eine Möglichkeit für mich, alle diese 10 runnings meines Programms parallelisieren, während immer noch irgendwie das Rückergebnis überprüft und eine richtige Ausgabedatei bereitstellt und während immer noch eine einzige .cmd-Datei und eine einzelne Ausgabedatei?
Lösung
Unter der Annahme, sie miteinander nicht durch das Schreiben auf die gleichen Dateien stören, etc:
test1.cmd
:: intercept sub-calls.
if "%1"=="test2" then goto :test2
:: start sub-calls.
start test1.cmd test2 1
start test1.cmd test2 2
start test1.cmd test2 3
:: wait for sub-calls to complete.
:loop1
if not exist test2_1.flg goto :loop1
:loop2
if not exist test2_2.flg goto :loop2
:loop3
if not exist test2_3.flg goto :loop3
:: output results sequentially
type test2_1.out >test1.out
del /s test2_1.out
del /s test2_1.flg
type test2_2.out >test1.out
del /s test2_2.out
del /s test2_2.flg
type test2_3.out >test1.out
del /s test2_3.out
del /s test2_3.flg
goto :eof
:test2
:: Generate one output file
echo %1 >test2_%1.out
ping -n 31 127.0.0.1 >nul: 2>nul:
:: generate flag file to indicate finished
echo x >test2_%1.flg
Dies wird drei gleichzeitige Prozesse beginnen jeweils die Echos es Sequenznummer als 30 Sekunden warten.
Alle mit einer cmd-Datei und (eventuell) einer Ausgabedatei.
Andere Tipps
Beim Laufen Dinge parallel in Batch-Dateien können über 'Start' ausführbar / Befehl erfolgen.
Fenster:
Sie erstellen eine Batch-Datei, die im Wesentlichen aufruft:
start TestSuite1.cmd [TestParams1]
start TestSuite1.cmd [TestParams2]
und so weiter, die im Wesentlichen neue Befehlszeilen gabelt,
, die funktionieren würde, wenn die Anwendung kann gleichzeitige Benutzer verarbeiten (auch wenn sie der gleiche Benutzer), und Ihre TestSuite1.cmd der Lage ist, Parameter zu behandeln.
Sie müssen das Skript starten mit unterschiedlichen Parametern auf verschiedene Maschinen denn was macht nimmt das Programm so lange für eine Aufgabe (IO, CPU-Zeit) werden in noch kürzerer Versorgung sein, wenn mehrere Instanzen Ihr Programm auf einmal ausgeführt werden.
Einzige Ausnahme:. Die Laufzeit ist, die durch das Programm setzt sich schlafen
Sie den Befehl Start , erzeugt er einen neuen Eingabeaufforderung und Sie können entlang irgendwelchen Befehlen Sie es ausführen möchten senden.
würde ich diese verwenden, um Batch-Dateien zu erzeugen, die die Tests ausgeführt werden und hängt dann zu einem output.txt mit >> als solche:
testthingie.cmd >> output.txt