이번에는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!