>  기사  >  웹 프론트엔드  >  Python API 자동 테스트를 구현하는 방법

Python API 자동 테스트를 구현하는 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-04-09 16:44:011997검색

이번에는 Python의 API 자동화 테스트를 구현하는 방법과 Python의 API 자동화 테스트를 구현하기 위한 Notes가 무엇인지 보여드리겠습니다. 실제 사례를 살펴보겠습니다.

모든 사람은 프로젝트에 대한 프로젝트 테스트의 중요성을 알아야 합니다. Python을 쓰는 친구는 자동화된 테스트 스크립트를 작성해 봤을 것입니다.
최근에는 회사 프로젝트에서 API 테스트를 담당하고 있습니다. 다음은 API 테스트를 정리하는 간단한 예입니다.

먼저 get, post, put 메서드가 포함된 편안한 API 인터페이스 파일 testpost.py를 작성하세요

#!/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: request 값에 대해 여기서 일반적으로 사용되는 세 가지 메서드를 정의했습니다.

post 메서드: request .get_json(), API 호출 시 json 메소드
get 및 put 메소드(reqparse.RequestParser())에 값이 전달되며, API 호출 시 값이 전달됩니다string

둘째, Blueprint(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')

를 정의한 다음 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를 작성합니다. 호출되는 api url은 주로 플라스크의 api.url_for 또는 플라스크의 url_for를 사용합니다.

flask_restful api.url_for 설명

api.url_for(TestPost, PostData='adb')의 특정 사용, 여기에서 TestPost는 API 청사진에 있기 때문에 Restful API 인터페이스 파일에 정의된 클래스를 참조합니다. api.add_resource(TestPost, '//postMeth')

flask의 url_for 사용 지침

url_for('testPostb.testpost', PostData='adb', ddos ​​='를 통해 클래스를 추가하여 정의되었습니다. 123'),
testPostb 문자열의 'testPostb.testpost'는 Blueprint의 이름, 즉 Blueprint('testPostb', name)의 testPostb = Blueprint('testPostb', name)를 나타냅니다.
testpost는 blueprint 아래 endpoit의 엔드포인트 이름을 의미합니다.Flask_restful에서는 api.add_resource(TestPost, '//postMeth')에 있는 클래스 이름 TestPost의 소문자를 의미합니다.

테스트 스크립트 시작:

C:\secauto3>python run.py test
test_post (testPostM.APITestCase) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.056s
OK

간단한 요약: url_for에 의해 전달된 값과 요청의 값 사이에는 상응하는 관계가 있습니다. 마지막 것은 api.add_resource의 클래스 이름이 소문자여야 하는 플라스크_restful의 엔드포인트 메소드입니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

Python에서 단위 테스트 테스트 인터페이스를 사용하는 단계에 대한 자세한 설명

Python은 문자가 나타나는 횟수를 어떻게 계산합니까?

위 내용은 Python API 자동 테스트를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.