So implementieren Sie automatisierte Python-API-Tests
Dieses Mal zeige ich Ihnen, wie Sie die API-Automatisierung von Python implementieren. Was sind die Vorsichtsmaßnahmen für die API-Automatisierung von Python? Hier sind praktische Fälle.
Jeder sollte wissen, wie wichtig Projekttests für ein Projekt sind. Freunde, die Python schreiben, sollten automatisierte Testskripte geschrieben haben.Seit Kurzem bin ich für die API-Tests in den Projekten des Unternehmens verantwortlich. Hier ist ein einfaches Beispiel, um die API-Tests zu regeln.
#!/usr/bin/env python # -*- coding: utf-8 -*- from flask import request from flask_restful import Resource from flask_restful import reqparse test_praser = reqparse.RequestParser() test_praser.add_argument('ddos') class TestPost(Resource): def post(self, PostData): data = request.get_json() user = User('wangjing') if data['ddos']: return {'hello': 'uese', "PostData": PostData, 'ddos': 'data[\'ddos\']'} return {'hello': 'uese', "PostData": PostData} def get(self, PostData): data = request.args if data and data['ddos']: return "hello" + PostData + data['ddos'], 200 return {'hello': 'uese', "PostData": PostData} def put(self, PostData): data = test_praser.parse_args() if data and data['ddos']: return "hello" + PostData + data['ddos'], 200 return {'hello': 'uese', "PostData": PostData}ps: Für den Wert von request habe ich drei häufig verwendete Werte definiert hier eine Methode:
Post-Methode: request.get_json(), beim Aufruf der API wird der Wert im JSON-Modus übergebenund schreiben Sie dann das Testskript testPostM. pyGet- und Put-Methoden: request.args oder reqparse.RequestParser( ), Aufruf der API Wenn die Zeichenfolge
übergeben wird, definieren Sie zweitens die Blueprint-Datei init.py
#!/usr/bin/env python # -*- coding: utf-8 -*- from flask import Blueprint from flask_restful import Api from testpost import TestPost testPostb = Blueprint('testPostb', name) api = Api(testPostb) api.add_resource(TestPost, '/<string:PostData>/postMeth')ps: Die aufgerufene API-URL verwendet hauptsächlich api.url_for von flask_restful oder url_for von flask api.url_for Beschreibung
#!/usr/bin/env python # -*- coding: utf-8 -*- import unittest import json from secautoApp.api.testPostMeth import api from flask import url_for from run import app from secautoApp.api.testPostMeth import TestPost headers = {'Accept': 'application/json', 'Content-Type': 'application/json' } class APITestCase(unittest.TestCase): def setUp(self): # self.app = create_app(os.getenv("SECAUTOCFG") or 'default') self.app = app # self.app_context = self.app.app_context() # self.app_context.push() self.client = self.app.test_client() # # def tearDown(self): # self.app_context.pop() def test_post(self): # with app.test_request_context(): response = self.client.get(api.url_for(TestPost, PostData='adb', ddos='123')) self.assertTrue(response.status_code == 200) response = self.client.get(url_for('testPostb.testpost', PostData='adb', ddos='123')) self.assertTrue(response.status_code == 200) self.assertTrue(json.loads(response.data)['PostData'] =='adb') response = self.client.post(url_for('testPostb.testpost', PostData='adb'), headers=headers, data=json.dumps({"ddos": '123'})) print json.loads(response.data) self.assertTrue(response.status_code == 200) response = self.client.put(url_for('testPostb.testpost', PostData='adb', ddos='123')) self.assertTrue(json.loads(response.data) == 'helloadb123') response = self.client.put(url_for('testPostb.testpost', PostData='adb')) print json.loads(response.data)['PostData'] self.assertTrue(response.status_code == 200)
api.url_for(TestPost,PostData='adb'), TestPost bezieht sich hier auf die Klasse, die in der Restful-API-Schnittstellendatei definiert ist, weil wir im API-Blueprint, Es wurde durch Hinzufügen einer Klasse über api.add_resource(TestPost, '//postMeth')
Verwendungsanweisungen für flask's url_for
definiert url_for('testPostb.testpost', PostData='adb', ddos='123'), in der Zeichenfolge 'testPostb.testpost' bezieht sich testPostb auf den Namen des Blueprints, d. h. testPostb = testPostb in Blueprint ('testPostb', name) in Blueprint('testPostb', name). testpost bezieht sich auf den Endpunktnamen von endpoit unter dem Blueprint. In flask_restful bezieht er sich auf den Kleinbuchstaben des Klassennamens TestPost in api.add_resource(TestPost, '//postMeth')
Kleine Zusammenfassung:Starten Sie das Testskript:
Der von url_for übergebene Wert hat eine entsprechende Beziehung zum Wert in der Anfrage. Das letzte ist die Endpunktmethode in flask_restful, die muss sei die Klasse in api.add_resource Kleingeschriebener Vorname.
C:\secauto3>python run.py test test_post (testPostM.APITestCase) ... ok ---------------------------------------------------------------------- Ran 1 test in 0.056s OKIch glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website.
Empfohlene Lektüre:
Detaillierte Erläuterung der Schritte zur Verwendung der Unittest-Testschnittstelle in Python
Wie Python die Anzahl der Buchstaben zählt erscheinen
Das obige ist der detaillierte Inhalt vonSo implementieren Sie automatisierte Python-API-Tests. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Shutil.rmtree () ist eine Funktion in Python, die den gesamten Verzeichnisbaum rekursiv löscht. Es kann bestimmte Ordner und alle Inhalte löschen. 1. Basisnutzung: Verwenden Sie Shutil.rmtree (Pfad), um das Verzeichnis zu löschen, und Sie müssen FilenotFoundError, Erlaubnissekror und andere Ausnahmen verarbeiten. 2. Praktische Anwendung: Sie können Ordner, die Unterverzeichnisse und Dateien enthalten, in einem Klick löschen, z. B. temporäre Daten oder zwischengespeicherte Verzeichnisse. 3. ANMERKUNGEN: Der Löschvorgang wird nicht wiederhergestellt; FilenotFoundError wird geworfen, wenn der Weg nicht existiert. Es kann aufgrund von Berechtigungen oder Einstellungen fehlschlagen. 4. Optionale Parameter: Fehler können von ignore_errors = true ignoriert werden

Um eine virtuelle Python -Umgebung zu erstellen, können Sie das Venv -Modul verwenden. Die Schritte sind: 1. Geben Sie das Projektverzeichnis ein, um die Python-Mvenvenv-Umgebung auszuführen, um die Umgebung zu schaffen. 2. verwenden Sie SourceEnv/bin/aktivieren Sie in Mac/Linux und Env \ Skripts \ aktivieren in Windows; 3.. Verwenden Sie das Pipinstall -Installationspaket, Pipfreeze> Anforderungen.txt, um Abhängigkeiten zu exportieren. V. Virtuelle Umgebungen können Projektabhängigkeiten isolieren, um Konflikte zu verhindern, insbesondere für die Entwicklung von Mehrfachprojekten, und Redakteure wie Pycharm oder VSCODE sind es ebenfalls

Installieren Sie den entsprechenden Datenbanktreiber; 2. verwenden Sie Connect (), um eine Verbindung zur Datenbank herzustellen. 3. Erstellen Sie ein Cursorobjekt; V. 5. Verwenden Sie Fetchall () usw., um Ergebnisse zu erhalten. 6. Commit () ist nach der Änderung erforderlich; 7. Schließlich schließen Sie die Verbindung oder verwenden Sie einen Kontextmanager, um sie automatisch zu behandeln. Der vollständige Prozess stellt sicher, dass die SQL -Operationen sicher und effizient sind.

Verwenden Sie Multiprocessing.queue, um Daten zwischen mehreren Prozessen zu übergeben, die für Szenarien mehrerer Hersteller und Verbraucher geeignet sind. 2. Verwenden Sie Multiprocessing.Pipe, um eine bidirektionale Hochgeschwindigkeitskommunikation zwischen zwei Prozessen zu erreichen, jedoch nur für Zweipunktverbindungen; 3. Verwenden Sie Wert und Array, um einfache Datentypen im gemeinsamen Speicher zu speichern, und müssen mit Sperre verwendet werden, um Wettbewerbsbedingungen zu vermeiden. 4. Verwenden Sie den Manager, um komplexe Datenstrukturen wie Listen und Wörterbücher auszutauschen, die hoch flexibel sind, aber eine geringe Leistung haben und für Szenarien mit komplexen gemeinsamen Zuständen geeignet sind. Geeignete Methoden sollten basierend auf Datengröße, Leistungsanforderungen und Komplexität ausgewählt werden. Warteschlange und Manager eignen sich am besten für Anfänger.

Verwenden Sie Boto3, um Dateien auf S3 hochzuladen, um Boto3 zuerst zu installieren und AWS -Anmeldeinformationen zu konfigurieren. 2. Erstellen Sie einen Client über boto3.client ('s3') und rufen Sie die Methode upload_file () auf, um lokale Dateien hochzuladen. 3.. Sie können S3_Key als Zielpfad angeben und den lokalen Dateinamen verwenden, wenn er nicht angegeben ist. V. 5. ACL, ContentType, StorageClass und Metadaten können durch den Parameter exteralArgs eingestellt werden. 6. Für Speicherdaten können Sie Bytesio verwenden, um Wörter zu erstellen

Pythonlistscani Implementierungsaufnahme append () penouspop () popopoperations.1.UseAppend () zwei -glückselige StotetopeThestack.2.USEP OP () TOREMOVEANDRETURTHETOPHETOP -Element, EnsuringToCheCifthestackisnotemptoavoidEx -Regerror.

PaymentHandlerapi ist Teil des Webpayments -Standards als Erweiterung von PaymentRequestAPI, und es besteht die Kernaufgabe darin, Entwicklern zu ermöglichen, einen "Zahlungsverarbeitungsverarbeiter" für die Implementierung von benutzerdefinierten Zahlungsprozessen zu registrieren. Es registriert Zahlungsmethoden über den Servicearbeiter und kombiniert die Beantragung der Zahlungsanmeldung im Rahmen des. Well Bekannten Verzeichnis, um Zahlungsverarbeitungsinformationen zu deklarieren. Bei Verwendung wird die Zahlungsanforderung über die PaymentRequest -Schnittstelle eingeleitet, der registrierte Zahlungsabwickler wird aufgerufen und die vollständige () -Methode wird aufgerufen, nachdem die Zahlung abgeschlossen ist. Zu den gemeinsamen Vorsichtsmaßnahmen gehören: 1. HTTPS -Bereitstellung; 2. Konfigurieren Sie den Dienst ordnungsgemäß

WAPHREFERENCESEXISTTOALALEFERCECTOBICTOUTPREENTINGHEIRGARBAGECOLLEKTION, ASFAHREDAVOIDMEMOREAKSANDCIRCULARREFERENCEN.1. UseWeakkeyDictionorWeakValedictionaryForCacheOrmapingStoletUnusedObjectsBecollected.2. Useweakreferences-Ansinchild-to
