HintergrundbeschreibungEs gibt ein Projekt, das Postman zum Testen der Schnittstelle verwendet. Die für die Schnittstelle erforderlichen Parameter sind:
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-AnfrageDie 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; Erstellen Sie Signaturen in Pre-Request-SkriptenPre-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: 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 geschriebenSchreiben 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: 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: Verwendung der Postman-KonsoleWenn 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: Die Abbildung zeigt die Ergebnisse von console.log(sercret) und sendRequest() Collection Runner Automatisierte API-TestsErstellen 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 Solange der Code für das zurückgegebene JSON-Ergebnis 0 ist, wird es übergeben. 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 SchnittstellentestsKlicken 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. TestergebnisseSie können sehen, dass die Ergebnisschnittstelle 2 die geplanten Ergebnisse erfolgreich zurückgibt. 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:
|
<<: 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
Inhaltsverzeichnis Problem 1: Zerstörung 1. Wie m...
Ich habe schon lange keinen Blog mehr geschrieben...
JavaScript-Umschalteffekt für Bekleidungsalben (ä...
Wenn Sie nginx als Reverse-Proxy verwenden, könne...
Vorwort Kürzlich stieß ich in einem Projekt auf e...
Inhaltsverzeichnis webpack5 Offizieller Start Bau...
Horizontales Scrollen ist nicht in allen Situation...
Inhaltsverzeichnis Hintergrund Hauptinhalt 1. Kom...
Szenario: Die von uns häufig verwendeten Interakt...
JS-Lauftrilogie js-Ausführungscode ist in drei Sc...
Inhaltsverzeichnis 1.1 Java-Umgebung als Vorausse...
Inhaltsverzeichnis dva Verwendung von dva Impleme...
Docker wird immer ausgereifter und seine Funktion...
Inhaltsverzeichnis Auf dem Server läuft Jupyter N...
Bei der Entwicklung für Mobilgeräte tritt häufig ...