Maison > Article > interface Web > Comment implémenter les tests automatisés de l'API Python
Cette fois, je vais vous montrer comment implémenter les tests automatisés de l'API de Python. Quelles sont les précautions pour les tests automatisés de l'API de Python. Voici des cas pratiques, jetons un coup d'œil.
Tout le monde devrait connaître l'importance des tests de projet pour un projet. Les amis qui écrivent du python devraient avoir écrit des scripts de test automatisés.
Récemment, je suis responsable des tests API dans les projets de l'entreprise. Voici un exemple simple pour trier les tests API.
Tout d'abord, écrivez le fichier d'interface API restful testpost.py, qui comprend les méthodes get, post et put
#!/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 : Pour la valeur de la requête, j'en ai défini trois couramment utilisés ceux ici Méthode :
est passée. Deuxièmement, définissez le fichier Blueprint init.pyméthode post : request.get_json(), lors de l'appel de l'API, la valeur est passée en mode json
méthodes get et put : request.args ou reqparse.RequestParser( ), appelant l'API Lorsque, la chaîne
#!/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')puis écrivez le script de test testPostM. py
#!/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)ps : L'url de l'API appelée utilise principalement api.url_for de flask_restful, ou url_for de flask. Laissez-moi parler de l'utilisation spécifique de ces deux méthodes
flask_restful. api.url_for description
api.url_for(TestPost,PostData='adb'), TestPost fait ici référence à la classe définie dans le fichier d'interface API restful, car nous dans le plan de l'API, il a été défini en ajoutant une classe via api.add_resource(TestPost, '//postMeth')
Instructions d'utilisation pour l'url_for de flask
url_for('testPostb.testpost', PostData='adb', ddos='123'), dans la chaîne 'testPostb.testpost',testPostb fait référence au nom du plan, c'est-à-dire testPostb = testPostb dans Blueprint ('testPostb', nom) dans Blueprint('testPostb', nom).
Démarrez le script de test :
testpost fait référence au nom du point de terminaison sous le plan. Dans flask_restful, il fait référence aux minuscules du nom de classe TestPost dans api.add_resource(TestPost, '//postMeth')
C:\secauto3>python run.py test test_post (testPostM.APITestCase) ... ok ---------------------------------------------------------------------- Ran 1 test in 0.056s OKPetit résumé :
La valeur transmise par url_for a une relation correspondante avec la valeur dans request. La dernière est la méthode du point de terminaison dans flask_restful, qui doit être utilisée. être la classe dans api.add_resource Prénom minuscule. Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
Explication détaillée des étapes d'utilisation de l'interface de test unittest en PythonComment Python compte le nombre de lettres apparaîtreCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!