Katalon ist in Automatisierungstests beliebt. Ich habe es bereits in unserem Projekt verwendet und es funktioniert erstaunlich.

Was ich jetzt erreichen möchte, ist, einen Testfall zu erstellen, in dem ein Terminal (mit Mac) geöffnet wird, und einige Befehle einzugeben, um es wie folgt auszuführen:

cd /documents/pem/key.pem
connect to -my server via SSH@method
sudo su
yum install php7
yum install mysql
2
user9460187 18 Apr. 2018 im 08:09

4 Antworten

Beste Antwort

Ich habe einige Nachforschungen angestellt. Ich habe keine Ressourcen oder Leute gefunden, die nach dem suchen, was ich bin. Ich denke, das ist offiziell Nein. Die Antwort darauf ist, es ist nicht möglich.

0
user9460187user9460187 19 Nov. 2018 im 05:41

Es ist möglich, Katalon Studio über die Befehlszeile .

Es gibt ein kurzes Tutorial hier.

Ab Version 5.10 (derzeit in der Beta) können Profilvariablen über den Befehlszeilenausführungsmodus überschrieben werden. Ein Beispiel im Katalon-Forum lautet:

Übergeben Sie einfach die Parameter in der Befehlszeile mit: -g_XXX = XXX

Unten finden Sie ein Beispiel für das Überschreiben einer URL-Variablen:

-g_URL=http://demoaut.katalon.com
1
Mate Mrše 13 Dez. 2018 im 08:53

Sie sind nicht allein und mit benutzerdefinierten Schlüsselwörtern können Sie erreichen, was Sie wollen. Hier ist ein Beispiel, das einen Test einer Befehlszeilen-App zeigt. Sie können das gleiche tun, um ein beliebiges Befehlszeilenskript aufzurufen. Stellen Sie sich ein Schlüsselwort runCmd oder ein Schlüsselwort runCmdWithOutput vor, um die Ausgabe abzurufen und verschiedene Asserts darauf auszuführen.

@Keyword
def pdfMetadata(String input) {
    KeywordUtil.logInfo("input: ${input}")

    def csaHome = System.getenv("CSA_HOME")
    def cmd = "cmd /c ${csaHome}/bin/csa -pdfmetadata -in \"${projectPath}${input}\"";
    runCmd(cmd)
}

def runCmd(String cmd) {
    KeywordUtil.logInfo("cmd: ${cmd}")

    def proc = cmd.execute();
    def outputStream = new StringBuffer();
    def errStream = new StringBuffer()
    proc.waitForProcessOutput(outputStream, errStream);
    println(outputStream.toString());
    println(errStream.toString())

    if(proc.exitValue() != 0){
        KeywordUtil.markFailed("Out:" + outputStream.toString() + ", Err: " + errStream.toString())
    }
}

Sie können dies dann in einem Testfall verwenden:

CustomKeywords.'CSA.pdfMetadata'('/src/pdf/empty.pdf')
1
Mathieu Fortin 19 Dez. 2018 im 14:34

Hier ist ein weiteres benutzerdefiniertes Schlüsselwort! Es nimmt den Dateinamen und den Pfad an und wenn Sie ihm keinen Pfad geben, sucht es nach der Datei im Projektstammverzeichnis. Es exportiert die Ausgabe der Batch-Datei in einen Ordner batch_reports in Ihrem Projektordner. Sie müssen dies im Voraus erstellen.

@Keyword
    def runPostmanBatch(String batchName , String batchPath){


        // source: https://www.mkyong.com/java/how-to-execute-shell-command-from-java/

        String firstParameter = "cmd /c " + batchName;
        String  secondParameter =  batchPath;

        if (batchPath == ""){
            secondParameter = RunConfiguration.getProjectDir();
            }

        try {
            KeywordUtil.logInfo("Executing " + firstParameter + " at " +  secondParameter)
                Process process = Runtime.getRuntime().exec(
                        firstParameter , null, new File(secondParameter));

                StringBuilder output = new StringBuilder();

                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(process.getInputStream()));

                String line;

                while ((line = reader.readLine()) != null) {
                    output.append(line + "\n");
                }

                int exitVal = process.waitFor();

                Date atnow = new Date()
                String now = atnow.format('yy-MM-dd HH-mm-ss')
                String report_path = RunConfiguration.getProjectDir() + "/postman_reports/" + RunConfiguration.getExecutionSourceName() + "_" + now + ".txt"
                BufferedWriter writer = new BufferedWriter(new FileWriter(report_path));
                writer.write(output.toString());
                writer.close();
                KeywordUtil.logInfo("postman report at: " + report_path)
                if (exitVal == 0) {

                    println("Success!"); 
                    println(output); 
                    KeywordUtil.markPassed("Ran successfully")                  
                } else {
                KeywordUtil.markFailed("Something went wrong")
                    println(exitVal);
                }



            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }               
    }
1
KrisztiánPál Klucsik 9 Aug. 2019 im 13:48