Hallo zusammen! Ich wurde von meinen Studierenden und Mentees zu diesem Artikel inspiriert. Ich empfehle ihnen oft, zu lernen, sobald sie mit dem Testautomatisierungsprozess auf vertraut sind. Sehen wir uns an, welche Merkmale die Verwendung von TypeScript in Ihrem Testautomatisierungs-Framework im Hinblick auf REST-API-Tests aufweist … TypeScript JavaScript Den vollständigen Code eines Testprojekts finden Sie . hier Typoskript Lassen Sie uns nicht zu tief darauf eingehen, was ist und wie es sich von unterscheidet, und das Wichtige benennen: . Aber ganz wichtig: Es hängt direkt von ( Plattform) ab. TypeScript JavaScript Es ist Programmiersprache die JavaScript Node.js- wird als Paket präsentiert, daher betrachte ich es einfach als mit einigen coolen Funktionen. TypeScript Node.js- JavaScript Um mehr über die Sprache selbst und ihre Angebote zu erfahren, besuchen Sie bitte , während wir über ihre Funktionen im Hinblick auf die Testautomatisierung sprechen … die offizielle Website Projektaufbau Lassen Sie uns den Erstellungsprozess eines Testautomatisierungsprojekts auf durchgehen: TypeScript Erstellen Sie ein Projekt. Node.js- npm init -y Installieren Sie das Paket. TypeScript- npm i typescript Generieren Sie eine Standard- Konfiguration für das Projekt – . TypeScript- tsconfig.json npx tsc --init Der obige Befehl generiert eine Standardkonfigurationsdatei, ich empfehle jedoch, sie stark zu kürzen, etwa : so { "compilerOptions": { "baseUrl": "./", "module": "esnext", "target": "esnext", "sourceMap": false, "moduleResolution": "node", "allowJs": true, "skipLibCheck": true, "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "paths": { "*": ["./*"] } } } Diese Konfiguration enthält das erforderliche Minimum: verwendet die neueste Version, EcmaScript- macht JSON-Importe verfügbar, ermöglicht die Verwendung des absoluten Pfads beim Import. Sie können Ihre Konfiguration mithilfe erweitern. der offiziellen Dokumentation Werkzeugauswahl Sie können jedes Tool verwenden, das das Ökosystem zu bieten hat, aber meiner Erfahrung nach entscheiden sich die meisten arbeiten, aus mehreren guten Gründen für : Node.js- Ingenieure, die mit TypeScript Jest großartige Community-Unterstützung (Updates, Antworten, Dokumente, Codebeispiele), flexible Konfiguration. Früher hatte ich Spaß daran, + zu verwenden, um den Kern des Projekts einzurichten, aber jetzt bleibe ich auch bei da es sowohl einen Testläufer als auch eine Assertionsbibliothek enthält. Mocha Chai Jest, scheint der beliebteste HTTP-Client zu sein, daher schlage ich vor, dass dies auch Ihre Wahl ist. Axios Ich kann nicht sagen, dass Sie gezwungen sind, dies für Ihr Setup zu verwenden, aber ich sage, dass es das Übliche ist, wenn Sie sich die Projekte ansehen. Jetzt installieren Sie einfach diese Pakete als Abhängigkeiten: npm i jest axios Typsammlungen Einige Pakete (wie ) enthalten Typen, jedoch nicht. Außerdem benötigt ein Paket zusammen mit , um ordnungsgemäß zu funktionieren – das erste aktiviert Funktionen und das zweite ermöglicht die Verwendung von . Axios TypeScript- Jest und Mocha Jest ts-jest- @types/jest TypeScript- IntelliSense Denken Sie also daran: Wenn Sie bei der Verwendung einiger Pakete nicht über die Funktion zur automatischen Vervollständigung verfügen, fehlen Ihnen wahrscheinlich Typdeklarationen. Lassen Sie uns auch -bezogene Erweiterungen (Pakete) installieren: TypeScript npm i ts-jest @types/jest Aufbau erfordert eine Konfigurationsvoreinstellung, daher müssen Sie diese in Ihrer Konfigurationsdatei (oder ) deklarieren: Jest ts-jest- package.json { "jest": { "preset": "ts-jest" } } Wenn Sie möchten, müssen Sie auch Ihre Konfiguration anpassen: innerhalb eines Projekts den absoluten Pfad verwenden { "jest": { "preset": "ts-jest", "moduleDirectories": [ "node_modules", "<rootDir>" ] } } Mit dieser Konfiguration können Sie Tests mit einem einfachen Befehl ausführen ... jest Konfigurieren Sie Ihr in also wie folgt: Testskript package.json { "scripts": { "test": "jest" } } Und führen Sie Ihre Tests dann jederzeit mit dem Befehl oder aus. npm test npm run test Ich empfehle Ihnen außerdem zu installieren, wenn Sie Benutzer sind. Damit können Sie gewünschte Tests/Suites mit nur einem Klick / . In handelt es sich um eine integrierte Funktion. , eine Jest Runner-Erweiterung Visual Studio Code- ausführen debuggen WebStorm Benutzerdefinierte Typen Die Hauptfunktion, die in REST-API-Tests einführt, ist... , Natürlich! TypeScript Typen Sie können angeben, wie Ihr Anfrage- und Antworttext aussehen soll, d. h. , und ETC. Schlüsselnamen Werttypen Nehmen wir als Beispiel einen Server – wir können seine Request-Body-Nutzlast für den Endpunkt als Typ aufschreiben: Paysis- /auth export type AuthRequestBody = { login: string password: string } Und das Gleiche gilt für den Antworttext – welcher Server soll unsere Anfrage senden: export type AuthResponseBody = { token?: string message?: string } Da es für Erfolgs-/Misserfolgsszenarien eine andere Nutzlast geben würde, können Sie Schlüssel über das „ markieren. Charakter. ?“ als „optional“ Sobald dies erledigt ist, können Sie diese Typen verwenden, um Anfragen und Überprüfungen in Ihren Tests zu verfassen ... Anfrage In können Sie über die Anforderungskonfiguration angeben, welchen Text Sie senden: Axios const payload: AxiosRequestConfig<AuthRequestBody> = { method: 'post', url: '/auth', data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, } in bedeutet genau das ☝️ AuthRequestBody AxiosRequestConfig<AuthRequestBody> Dies bedeutet, dass Sie gezwungen sind, die Nutzlast zu verwenden, die dem bereitgestellten Typ im entspricht. Wenn Sie vergessen, einige erforderliche Felder festzulegen oder zu viele Felder festzulegen, wird eine Fehlermeldung angezeigt. AuthRequestBody data Antwort Das Gleiche gilt auch für die Reaktion: const response: AxiosResponse<AuthResponseBody> = await client.request(payload) Dadurch wird die automatische Vervollständigung zum Objekt hinzugefügt, sodass Sie auf die Felder “ oder zugreifen können. response.data response.data.token response.data.message Erweiterte Tools Abgesehen von den oben genannten einfachen Dingen ist es auch möglich, . Damit können Sie nicht jeden einzelnen Schlüssel in einem Antworttext überprüfen, um festzustellen, ob er mit dem Schema übereinstimmt, sondern . ein JSON-Schema aus Ihren benutzerdefinierten Typen zu generieren die gesamte Nutzlast Die Idee ist also: Generieren Sie ein aus benutzerdefinierten Typen. JSON- Schema Verwenden Sie einen benutzerdefinierten Matcher um den Antworttext zu validieren. toMatchSchema, Ziemlich coole Sache, aber denken Sie daran, dass Ihre Tests nach diesen Änderungen möglicherweise unzuverlässig werden – das passiert, wenn einige zusätzliche Felder erscheinen, sodass Sie das Schema regelmäßig aktualisieren müssen. Abschluss Die Einrichtung kann schwierig sein, insbesondere wenn Sie es zum ersten Mal verwenden, aber es lohnt sich! von TypeScript Wenn Sie Ihre Eingabe- und Ausgabedaten mit Typen abdecken, kann es beim Parsen dieser Objekte auf keinen Fall zu Tippfehlern oder anderen Syntaxfehlern kommen. Es erspart Ihnen einfache Fehler und lässt Sie die Struktur Ihrer Anfragen direkt in Ihrem Code sehen, sodass Sie keine (wie ) öffnen und nach der benötigten Anfrage suchen müssen, um zu sehen, welchen Text sie anfordert/antwortet mit. HTTP- Sammlung Postman Teilen Sie mir Ihre Erfahrungen und Ihre Meinung mit.