Heim > Artikel > Web-Frontend > 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!