> 백엔드 개발 > 파이썬 튜토리얼 > Python unittest는 API 자동화 Testing_python을 구현합니다.

Python unittest는 API 자동화 Testing_python을 구현합니다.

不言
풀어 주다: 2018-04-04 16:44:55
원래의
2016명이 탐색했습니다.

이 글에서는 API 자동화 테스트를 구현하기 위한 Python 단위 테스트 방법을 주로 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.

프로젝트에 대한 프로젝트 테스트의 중요성은 누구나 알아야 합니다. 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: 요청 값에 대해 일반적으로 사용되는 세 가지 메서드를 여기에 정의했습니다.

post 메소드: request.get_json(), API 호출 시 json 메소드에 값이 전달됩니다.
get 및 put 메소드: request.args 또는 reqparse.RequestParser(), API 호출 시 값이 문자열로 전달됩니다. Second로, 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, &#39;/<string:PostData>/postMeth&#39;)
로그인 후 복사

then을 정의하고 테스트 스크립트 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 = {&#39;Accept&#39;: &#39;application/json&#39;,
        &#39;Content-Type&#39;: &#39;application/json&#39;
        }

  class APITestCase(unittest.TestCase):
    def setUp(self):
      # self.app = create_app(os.getenv("SECAUTOCFG") or &#39;default&#39;)
      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=&#39;adb&#39;, ddos=&#39;123&#39;))
      self.assertTrue(response.status_code == 200)

      response = self.client.get(url_for(&#39;testPostb.testpost&#39;, PostData=&#39;adb&#39;, ddos=&#39;123&#39;))
      self.assertTrue(response.status_code == 200)  
      self.assertTrue(json.loads(response.data)[&#39;PostData&#39;] ==&#39;adb&#39;)

      response = self.client.post(url_for(&#39;testPostb.testpost&#39;, PostData=&#39;adb&#39;), headers=headers,
                    data=json.dumps({"ddos": &#39;123&#39;}))
      print json.loads(response.data)
      self.assertTrue(response.status_code == 200)

      response = self.client.put(url_for(&#39;testPostb.testpost&#39;, PostData=&#39;adb&#39;, ddos=&#39;123&#39;))
      self.assertTrue(json.loads(response.data) == &#39;helloadb123&#39;)

      response = self.client.put(url_for(&#39;testPostb.testpost&#39;, PostData=&#39;adb&#39;))
      print json.loads(response.data)[&#39;PostData&#39;]
      self.assertTrue(response.status_code == 200)
로그인 후 복사

ps : 호출 할 API URL은 주로 API입니다. .url_for ofFlask_restful 또는 플라스크의 url_for, 이 두 가지 방법의 구체적인 사용법에 대해 이야기하겠습니다

flask_restful의 api.url_for 설명


api.url_for(TestPost,PostData='adb'), 여기서 TestPost는 다음을 참조합니다. api.add_resource(TestPost, '//postMeth')


Flask의 url_for

사용 지침


url_for('testPostb.testpost', PostData='adb', ddos='123'), 'testPostb.testpost' 문자열에서
testPostb는 청사진의 이름을 나타냅니다. 즉, testPostb = Blueprint( testPostb의 Blueprint('testPostb', 이름)에 있는 'testPostb', 이름).

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의 엔드포인트 메소드입니다. .

관련 권장 사항:

파이썬이 unittest를 사용하여 인터페이스_python을 테스트하는 방법

python+requests+unittest API 인터페이스 테스트 문제

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿