Automatisierte Schnittstellentests mit Postman

Automatisierte Schnittstellentests mit Postman

Hintergrundbeschreibung

Es gibt ein Projekt, das Postman zum Testen der Schnittstelle verwendet. Die für die Schnittstelle erforderlichen Parameter sind:

  • appid: Anwendungskennung;
  • sign: Anforderungssignatur, die mit dem Verschlüsselungsalgorithmus HMACSHA1 berechnet werden muss. Die Signaturzeichenfolge lautet: {appid}${url}${stamp};
  • Stempel: Dies ist der Zeitstempel;
  • Option: Geschäftsparameter;

Die Frage ist, wie man dynamisch eine Signatur basierend auf den Parametern erstellt, wenn Postman eine Anfrage initiiert?

In der Postman-Skriptbibliothek unterstützt CryptoJS die Verschlüsselung verschiedener Algorithmen, darunter HMACSHA1 und Signaturalgorithmen.

Die Schwierigkeit besteht darin, den Pfadparameter in der URL abzurufen. Wenn eine Anfrage initiiert wird, kann ein Pfadwert festgelegt werden. Wie erhält man den Pfadwert, wenn der automatisierte Test ausgeführt werden muss?

Erstellen einer GET-Anfrage

Die grundlegende Verwendung von Postman wird hier nicht vorgestellt. Erstellen Sie zunächst eine GET-Anforderung mit verschiedenen in der URL konfigurierten dynamischen Parametern.

{ {Variablenname}}: die Syntax für Postman zum Verweisen auf Umgebungsvariablen;

{ {$guid}}: Von Postman vordefinierte Umgebungsvariable zum Abrufen eines GUID-Werts;

Bild

Erstellen Sie Signaturen in Pre-Request-Skripten

Pre-Request-Skripte sind eine JavaScript-Ausführungsumgebung, die ausgeführt wird, bevor die Anforderung gesendet wird. Verwenden Sie sie einfach als JS, aber einige JS-Bibliotheken unterstützen sie nicht.

Der nächste Schritt besteht darin, die Signatur dynamisch abzurufen

1. Fester Wert, der in der Umgebungsvariable „Appid“ konfiguriert ist;

2. Holen Sie sich den Zeitstempel des Stempels:

//Unix-Zeit abrufen getUnixTime: function(){ return Math.round(new Date().getTime()/1000);
}

3. Der URL-Wert kann über request.url abgerufen und anschließend der Pfad analysiert werden:

//Den Pfadteil der URL abrufen getUrlRelativePath:function(url){ var arrUrl = url.split("//");
    var start = arrUrl[1].indexOf("/");
    var end=arrUrl[1].indexOf("?");
    var relUrl = arrUrl[1].substring(start,end); //Stopp wird ausgelassen, alle Zeichen vom Anfang bis zum Ende werden abgefangen console.log(relUrl); return relUrl;
}

4. Erstellen Sie eine Signaturzeichenfolge und verschlüsseln Sie sie mit dem geheimen Schlüssel.

Die von Postman bereitgestellte Bibliothek von Verschlüsselungsalgorithmen unterstützt möglicherweise nicht alle davon, und manchmal müssen Sie Signaturen mit dem Backend austauschen.

var Host = pm.environment.get("Host"); var Text = encodeURIComponent(plain);
pm.sendRequest(host+"/FaceIn/ToHmacsha1?plain="+text+"&secret="+sercret, function (err, response) { var json=response.json(); //Die Signatur enthält Sonderzeichen wie + und muss URL-codiert werden pm.environment.set("sign",encodeURIComponent(json.result));
});

Der Signaturstring ist vorzugsweise URL-kodiert.

Legacy-Problem: Beim Austausch von Signaturen aus dem Backend wird zunächst der String responsejson() zurückgegeben und kann nicht geparst werden!

5. Verwenden Sie eval, um die definierte Variable postmanUtil in die globale Variable einzufügen, und rufen Sie dann auf

eval(Umgebung.postmanUtil);postmanUtil.setLsdzSign();

Das Ergebnis ist wie folgt:

Bild

Der Code lautet wie folgt:

var postmanUtil={ //Unix-Zeit abrufen getUnixTime:function(){ return Math.round(new Date().getTime()/1000);
  }, //Den Pfadteil der URL abrufen getUrlRelativePath:function(url){ var arrUrl = url.split("//");
    var start = arrUrl[1].indexOf("/");
    var end=arrUrl[1].indexOf("?");
    var relUrl = arrUrl[1].substring(start,end); //Stopp wird ausgelassen, alle Zeichen vom Anfang bis zum Ende werden abgefangen console.log(relUrl); return relUrl;
  }, //Signatur setLsdzSign:function(){ var appid=pm.environment.get("appid"); var sercret=pm.environment.get("appsercret"); //Zeitstempel var time=postmanUtil.getUnixTime();
       pm.environment.set("stamp", time); //Adresse ruft den Pfadteil der aktuellen Adresse abvar path= postmanUtil.getUrlRelativePath(request.url); console.log(path); var url=path; var plain=appid+"$"+url.toLowerCase()+"$"+time; var hmac = CryptoJS.HmacSHA1(plain, sercret).toString(CryptoJS.enc.Base64); //Signatur abrufen, CryptoJS.HmacSHA1 kann den Signaturalgorithmus nicht erfüllen und kann nur aus dem Hintergrund abgerufen werdenvar host=pm.environment.get("host"); var text=encodeURIComponent(plain);
        pm.sendRequest(host+"/FaceIn/ToHmacsha1?plain="+text+"&secret="+sercret, function (err, response) { var json=response.json(); //Die Signatur enthält Sonderzeichen wie + und muss URL-codiert werden pm.environment.set("sign",encodeURIComponent(json.result));
        });
  }
}eval(Umgebung.postmanUtil);
postmanUtil.setLsdzSign();

Das Skript wird in die Umgebungsvariable geschrieben

Schreiben Sie den obigen Code in ein Pre-Request-Skript. Wenn es sich um eine einzelne Schnittstelle handelt, ist das noch in Ordnung. Selbst wenn es mehrere Schnittstellen gibt, kopieren Sie einfach eine Kopie.

Probleme treten auf, wenn das Skript geändert werden muss. Sie müssen zum Fenster „Pre-Request-Skript“ jeder Anforderung gehen, um es zu ändern. Wie lässt sich dieses Problem lösen?

Dies kann gelöst werden, indem postmanUtil in ENVIRONMENT wie folgt definiert wird:

Bild

Tatsächlich wird einfach „postmanUtil“ in die Umgebungsvariable eingefügt. Sonst ändert sich nichts. Behalten Sie einfach den Wert in der Umgebungsvariable bei, und Sie müssen sie nicht einzeln ändern.

Wenn man sich den Skriptcode vor der Anforderung ansieht, ist es viel einfacher:

Bild

Verwendung der Postman-Konsole

Wenn Sie nicht wissen, ob die Umgebungsvariablen erfolgreich abgerufen wurden, oder wenn Sie den Wert einer Variablen anzeigen möchten, bietet Postman auch eine sehr praktische Konsolenansicht. Unter dem Menü Ansicht kann mit Postman-Konsole anzeigen die folgende Konsole geöffnet werden:

Bild

Die Abbildung zeigt die Ergebnisse von console.log(sercret) und sendRequest()

Collection Runner Automatisierte API-Tests

Erstellen von Testfällen für die Schnittstelle

Für das Ergebnis der HTML-Rückgabe gilt: Solange der Testtext einen bestimmten Wert enthält, wird er bestanden

Bild

Solange der Code für das zurückgegebene JSON-Ergebnis 0 ist, wird es übergeben.

Bild

Auf der rechten Seite des Fensters befinden sich allgemeine Tastenkombinationen für Skripts. Sie können diese durch Auswählen generieren. Das ist sehr praktisch.

Auswählen und Ausführen automatisierter Schnittstellentests

Klicken Sie auf der Homepage oben links auf „Runner“, um die zuvor erstellte Schnittstelle auszuwählen, wählen Sie die Umgebung aus und klicken Sie auf „Schnittstelle xxx ausführen“, um den Skripttest auszuführen.

Bild

Testergebnisse

Sie können sehen, dass die Ergebnisschnittstelle 2 die geplanten Ergebnisse erfolgreich zurückgibt.

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über die tatsächliche Praxis des automatisierten Schnittstellentests von Postman. Weitere relevante Inhalte zum automatisierten Schnittstellentest von Postman finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Implementierung verschiedener Arten der Wertübertragung in der Postman-Testschnittstelle
  • Postman-Schnittstelle zum Ausführen der zugehörigen Testmethodenschritte
  • Skripttest Postman Quick Export Python-Schnittstelle Testprozessbeispiel
  • Springboot zum Hochladen mehrerer Dateien verwendet Postman, um die Schnittstelle zum Hochladen mehrerer Dateien zu testen
  • So verwenden Sie Postman zum Testen der Schnittstelle (Testen des Benutzerverwaltungsmoduls)
  • Analyse des HTTP-Schnittstellentestprozesses basierend auf Postman
  • Grafische Schritte zur Batchausführung von Schnittstellentests in Postman

<<:  Austausch von Designideen für die offizielle Website von Navigation Century

>>:  So legen Sie die Schriftfarbe in HTML fest und erhalten mit PS eine genaue Schriftfarbe in HTML

Artikel empfehlen

So verwalten Sie zwischengespeicherte Seiten in Vue

Inhaltsverzeichnis Problem 1: Zerstörung 1. Wie m...

JavaScript zum Erzielen eines Taobao-Produktbild-Umschalteffekts

JavaScript-Umschalteffekt für Bekleidungsalben (ä...

Tutorial: Nginx-Reverse-Proxy-Konfiguration zum Entfernen von Präfixen

Wenn Sie nginx als Reverse-Proxy verwenden, könne...

Zusammenfassung zum horizontal scrollenden Website-Design

Horizontales Scrollen ist nicht in allen Situation...

So können Sie lange Vue-Listen schnell laden

Inhaltsverzeichnis Hintergrund Hauptinhalt 1. Kom...

Die benutzerdefinierte Vue-Komponente implementiert eine bidirektionale Bindung

Szenario: Die von uns häufig verwendeten Interakt...

Werfen wir einen Blick auf die Vorkompilierung von JavaScript (Zusammenfassung)

JS-Lauftrilogie js-Ausführungscode ist in drei Sc...

Installieren Sie Kafka unter Linux

Inhaltsverzeichnis 1.1 Java-Umgebung als Vorausse...

React DVA-Implementierungscode

Inhaltsverzeichnis dva Verwendung von dva Impleme...

Schritte zur Bereitstellungsmethode für Docker Stack für Webcluster

Docker wird immer ausgereifter und seine Funktion...

Lösen Sie das Problem beim Ausführen von Jupyter Notebook auf dem Server

Inhaltsverzeichnis Auf dem Server läuft Jupyter N...

Der beste Weg, um den 1px-Rand auf Mobilgeräten zu lösen (empfohlen)

Bei der Entwicklung für Mobilgeräte tritt häufig ...