Maison > interface Web > js tutoriel > le corps du texte

Comment implémenter les tests automatisés de l'API Python

php中世界最好的语言
Libérer: 2018-04-09 16:44:01
original
1996 Les gens l'ont consulté

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}
Copier après la connexion

ps : Pour la valeur de la requête, j'en ai défini trois couramment utilisés ceux ici Méthode :

mé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

est passée. Deuxièmement, définissez le fichier Blueprint 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')
Copier après la connexion
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)
Copier après la connexion
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).
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')

Démarrez le script de test :

C:\secauto3>python run.py test
test_post (testPostM.APITestCase) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.056s
OK
Copier après la connexion
Petit 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 Python

Comment Python compte le nombre de lettres apparaître

Ce 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!