最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostMan接口測(cè)試用例自動(dòng)轉(zhuǎn)成Python的測(cè)試腳本

 更新時(shí)間:2024年06月01日 11:20:48   作者:無(wú)涯技術(shù)博客  
PosMan做服務(wù)端的自動(dòng)化測(cè)試中,我們可以把Collection里面的測(cè)試用例導(dǎo)入出來(lái),它是JSON的文件,然后我們解析這些JSON文件,讓它自動(dòng)的轉(zhuǎn)成Python測(cè)試代碼,實(shí)現(xiàn)了PostMan里面的接口測(cè)試用例自動(dòng)的轉(zhuǎn)成了Python的測(cè)試腳本,而且?guī)Я藬嘌?/div>

在使用PosMan做服務(wù)端的自動(dòng)化測(cè)試中,我們可以把測(cè)試用例加到一個(gè)Collection中,但是隨著測(cè)試用例越來(lái)越多,以及工作的需求,我們需要把PostMan中的測(cè)試用例需要遷移到腳本的方式實(shí)現(xiàn),平常的遷移思路是我們?cè)谀_本里面把之前的接口測(cè)試用例重新實(shí)現(xiàn),這樣相對(duì)而言它的成本是比較高的,特別是涉及的自動(dòng)化測(cè)試用例特別多的時(shí)候。我們可以把Collection里面的測(cè)試用例導(dǎo)入出來(lái),它是JSON的文件,然后我們解析這些JSON文件,讓它自動(dòng)的轉(zhuǎn)成Python測(cè)試代碼,從而輕松的完成這樣的一個(gè)過(guò)程。被測(cè)試的API代碼如下:

#!/usr/bin/env python
#!coding:utf-8

from flask import  Flask,jsonify
from flask_restful import  Api,Resource

app=Flask(__name__)
api=Api(app)

class LoginView(Resource):
   def get(self):
      return {'status':0,'msg':'ok','data':'this is a login page'}

   def post(self):
      parser=reqparse.RequestParser()
      parser.add_argument('username', type=str, required=True, help='用戶(hù)名不能為空')
      parser.add_argument('password',type=str,required=True,help='賬戶(hù)密碼不能為空')
      parser.add_argument('age',type=int,help='年齡必須為正正數(shù)')
      parser.add_argument('sex',type=str,help='性別只能是男或者女',choices=['女','男'])
      args=parser.parse_args()
      return jsonify(args)

api.add_resource(LoginView,'/login',endpoint='login')

if __name__ == '__main__':
   app.run(debug=True)

在PostMan里面創(chuàng)建Collection名稱(chēng)login,里面的接口測(cè)試用例具體如下:

服務(wù)端測(cè)試之PostMan自動(dòng)生成測(cè)試腳本_接口測(cè)試

在PostMan里面導(dǎo)出該Collection,命名為login.json,login.json文件的內(nèi)容為:

{
   "info": {
      "_postman_id": "982a3108-6710-4a71-aaf8-e62a00d1813c",
      "name": "login",
      "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
   },
   "item": [
      {
         "name": "校驗(yàn)用戶(hù)名不能為空",
         "request": {
            "method": "POST",
            "header": [
               {
                  "key": "Content-Type",
                  "name": "Content-Type",
                  "value": "application/json",
                  "type": "text"
               }
            ],
            "body": {
               "mode": "raw",
               "raw": "{\n\t\"password\":\"admin\",\n\t\"sex\":\"男\(zhòng)",\n\t\"age\":18\n}",
               "options": {
                  "raw": {
                     "language": "json"
                  }
               }
            },
            "url": {
               "raw": "http://localhost:5000/login",
               "protocol": "http",
               "host": [
                  "localhost"
               ],
               "port": "5000",
               "path": [
                  "login"
               ]
            }
         },
         "response": []
      },
      {
         "name": "校驗(yàn)密碼不能為空",
         "request": {
            "method": "POST",
            "header": [
               {
                  "key": "Content-Type",
                  "name": "Content-Type",
                  "value": "application/json",
                  "type": "text"
               }
            ],
            "body": {
               "mode": "raw",
               "raw": "{\n\t\"username\":\"wuya\",\n\t\"sex\":\"男\(zhòng)",\n\t\"age\":18\n}",
               "options": {
                  "raw": {
                     "language": "json"
                  }
               }
            },
            "url": {
               "raw": "http://localhost:5000/login",
               "protocol": "http",
               "host": [
                  "localhost"
               ],
               "port": "5000",
               "path": [
                  "login"
               ]
            }
         },
         "response": []
      },
      {
         "name": "校驗(yàn)性別參數(shù)不是男或者女",
         "request": {
            "method": "POST",
            "header": [
               {
                  "key": "Content-Type",
                  "name": "Content-Type",
                  "value": "application/json",
                  "type": "text"
               }
            ],
            "body": {
               "mode": "raw",
               "raw": "{\n\t\"username\":\"wuya\",\n\t\"password\":\"admin\",\n\t\"sex\":\"asdf\",\n\t\"age\":18\n}",
               "options": {
                  "raw": {
                     "language": "json"
                  }
               }
            },
            "url": {
               "raw": "http://localhost:5000/login",
               "protocol": "http",
               "host": [
                  "localhost"
               ],
               "port": "5000",
               "path": [
                  "login"
               ]
            }
         },
         "response": []
      },
      {
         "name": "校驗(yàn)?zāi)挲g不是正整數(shù)",
         "request": {
            "method": "POST",
            "header": [
               {
                  "key": "Content-Type",
                  "name": "Content-Type",
                  "value": "application/json",
                  "type": "text"
               }
            ],
            "body": {
               "mode": "raw",
               "raw": "{\n\t\"username\":\"wuya\",\n\t\"password\":\"admin\",\n\t\"sex\":\"男\(zhòng)",\n\t\"age\":\"rrest\"\n}",
               "options": {
                  "raw": {
                     "language": "json"
                  }
               }
            },
            "url": {
               "raw": "http://localhost:5000/login",
               "protocol": "http",
               "host": [
                  "localhost"
               ],
               "port": "5000",
               "path": [
                  "login"
               ]
            }
         },
         "response": []
      },
      {
         "name": "校驗(yàn)登錄成功",
         "request": {
            "method": "POST",
            "header": [
               {
                  "key": "Content-Type",
                  "name": "Content-Type",
                  "value": "application/json",
                  "type": "text"
               }
            ],
            "body": {
               "mode": "raw",
               "raw": "{\n\t\"username\":\"wuya\",\n\t\"password\":\"admin\",\n\t\"sex\":\"男\(zhòng)",\n\t\"age\":\"18\"\n}",
               "options": {
                  "raw": {
                     "language": "json"
                  }
               }
            },
            "url": {
               "raw": "http://localhost:5000/login",
               "protocol": "http",
               "host": [
                  "localhost"
               ],
               "port": "5000",
               "path": [
                  "login"
               ]
            }
         },
         "response": []
      }
   ],
   "protocolProfileBehavior": {}
}

本質(zhì)上而言,它就是一個(gè)JSON文件,使用Python文件對(duì)它進(jìn)行反序列化處理成字典數(shù)據(jù)類(lèi)型,然后操作字典,這個(gè)過(guò)程相對(duì)來(lái)說(shuō)不難,具體實(shí)現(xiàn)的代碼如下:

#!/usr/bin/env python
#!coding:utf-8

import  requests
import  json
import  pytest

def operationJson():
   '''對(duì)login.json文件進(jìn)行處理'''
   return json.load(open('login.json','r'))['item']

@pytest.mark.parametrize('datas',operationJson())
def test_api_login(datas):
   '''登錄API的校驗(yàn)測(cè)試'''
   r=requests.request(
      method=datas['request']['method'],
      url=datas['request']['url']['raw'],
      json=json.loads(datas['request']['body']['raw']))
   print(json.dumps(r.json(),ensure_ascii=False))

if __name__ == '__main__':
   pytest.main(["-s","-v","test_login.py"])

使用Pytest框架的參數(shù)化幾行代碼就可以搞定了,當(dāng)然斷言需要單獨(dú)的加。這個(gè)過(guò)程的思路其實(shí)非常簡(jiǎn)單,就是對(duì)JSON的文件處理成字典,然后利用Pytest框架的參數(shù)化來(lái)循環(huán)處理。當(dāng)然可以把JSON文件簡(jiǎn)單的添加下斷言,就更加智能化,添加的內(nèi)容添加到response的里面內(nèi)容,對(duì)login.json都在里面添加下驗(yàn)證點(diǎn),完善后的文件內(nèi)容為:

{
   "info": {
      "_postman_id": "982a3108-6710-4a71-aaf8-e62a00d1813c",
      "name": "login",
      "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
   },
   "item": [
      {
         "name": "校驗(yàn)用戶(hù)名不能為空",
         "request": {
            "method": "POST",
            "header": [
               {
                  "key": "Content-Type",
                  "name": "Content-Type",
                  "value": "application/json",
                  "type": "text"
               }
            ],
            "body": {
               "mode": "raw",
               "raw": "{\n\t\"password\":\"admin\",\n\t\"sex\":\"男\(zhòng)",\n\t\"age\":18\n}",
               "options": {
                  "raw": {
                     "language": "json"
                  }
               }
            },
            "url": {
               "raw": "http://localhost:5000/login",
               "protocol": "http",
               "host": [
                  "localhost"
               ],
               "port": "5000",
               "path": [
                  "login"
               ]
            }
         },
         "response":
         {
            "message": {
               "username": "用戶(hù)名不能為空"
            }
         }
      },
      {
         "name": "校驗(yàn)密碼不能為空",
         "request": {
            "method": "POST",
            "header": [
               {
                  "key": "Content-Type",
                  "name": "Content-Type",
                  "value": "application/json",
                  "type": "text"
               }
            ],
            "body": {
               "mode": "raw",
               "raw": "{\n\t\"username\":\"wuya\",\n\t\"sex\":\"男\(zhòng)",\n\t\"age\":18\n}",
               "options": {
                  "raw": {
                     "language": "json"
                  }
               }
            },
            "url": {
               "raw": "http://localhost:5000/login",
               "protocol": "http",
               "host": [
                  "localhost"
               ],
               "port": "5000",
               "path": [
                  "login"
               ]
            }
         },
         "response":
         {
            "message": {
               "password": "賬戶(hù)密碼不能為空"
            }
         }
      },
      {
         "name": "校驗(yàn)性別參數(shù)不是男或者女",
         "request": {
            "method": "POST",
            "header": [
               {
                  "key": "Content-Type",
                  "name": "Content-Type",
                  "value": "application/json",
                  "type": "text"
               }
            ],
            "body": {
               "mode": "raw",
               "raw": "{\n\t\"username\":\"wuya\",\n\t\"password\":\"admin\",\n\t\"sex\":\"asdf\",\n\t\"age\":18\n}",
               "options": {
                  "raw": {
                     "language": "json"
                  }
               }
            },
            "url": {
               "raw": "http://localhost:5000/login",
               "protocol": "http",
               "host": [
                  "localhost"
               ],
               "port": "5000",
               "path": [
                  "login"
               ]
            }
         },
         "response":
         {
            "message": {
               "sex": "性別只能是男或者女"
            }
         }
      },
      {
         "name": "校驗(yàn)?zāi)挲g不是正整數(shù)",
         "request": {
            "method": "POST",
            "header": [
               {
                  "key": "Content-Type",
                  "name": "Content-Type",
                  "value": "application/json",
                  "type": "text"
               }
            ],
            "body": {
               "mode": "raw",
               "raw": "{\n\t\"username\":\"wuya\",\n\t\"password\":\"admin\",\n\t\"sex\":\"男\(zhòng)",\n\t\"age\":\"rrest\"\n}",
               "options": {
                  "raw": {
                     "language": "json"
                  }
               }
            },
            "url": {
               "raw": "http://localhost:5000/login",
               "protocol": "http",
               "host": [
                  "localhost"
               ],
               "port": "5000",
               "path": [
                  "login"
               ]
            }
         },
         "response":
         {
            "message": {
               "age": "年齡必須為正正數(shù)"
            }
         }
      },
      {
         "name": "校驗(yàn)登錄成功",
         "request": {
            "method": "POST",
            "header": [
               {
                  "key": "Content-Type",
                  "name": "Content-Type",
                  "value": "application/json",
                  "type": "text"
               }
            ],
            "body": {
               "mode": "raw",
               "raw": "{\n\t\"username\":\"wuya\",\n\t\"password\":\"admin\",\n\t\"sex\":\"男\(zhòng)",\n\t\"age\":\"18\"\n}",
               "options": {
                  "raw": {
                     "language": "json"
                  }
               }
            },
            "url": {
               "raw": "http://localhost:5000/login",
               "protocol": "http",
               "host": [
                  "localhost"
               ],
               "port": "5000",
               "path": [
                  "login"
               ]
            }
         },
         "response":
         {
            "age": 18,
            "password": "admin",
            "sex": "男",
            "username": "wuya"
         }
      }
   ],
   "protocolProfileBehavior": {}
}

繼續(xù)完善測(cè)試代碼,增加接口的斷言,完善后的代碼如下:

#!/usr/bin/env python
#!coding:utf-8

import  requests
import  json
import  pytest

def operationJson():
   '''對(duì)login.json文件進(jìn)行處理'''
   return json.load(open('login.json','r'))['item']

@pytest.mark.parametrize('datas',operationJson())
def test_api_login(datas):
   '''登錄API的校驗(yàn)測(cè)試'''
   # print(type(datas['response']))
   r=requests.request(
      method=datas['request']['method'],
      url=datas['request']['url']['raw'],
      json=json.loads(datas['request']['body']['raw']))
   assert r.json()==datas['response']

if __name__ == '__main__':
   pytest.main(["-s","-v","test_login.py"])

執(zhí)行如上的測(cè)試代碼,見(jiàn)如下圖展示的執(zhí)行結(jié)果信息:

服務(wù)端測(cè)試之PostMan自動(dòng)生成測(cè)試腳本_自動(dòng)化測(cè)試_02

依據(jù)如上,很輕松的實(shí)現(xiàn)了PostMan里面的接口測(cè)試用例自動(dòng)的轉(zhuǎn)成了Python的測(cè)試腳本,而且?guī)Я藬嘌缘男畔ⅰ?/p>

到此這篇關(guān)于PostMan接口測(cè)試用例自動(dòng)轉(zhuǎn)成Python的測(cè)試腳本的文章就介紹到這了,更多相關(guān)PostMan自動(dòng)生成Python測(cè)試腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文詳解Git的暫存與stash功能

    一文詳解Git的暫存與stash功能

    在開(kāi)發(fā)過(guò)程中,Git的暫存和Stash功能是管理代碼變更的核心工具,本文將系統(tǒng)梳理git add、git stash及相關(guān)高級(jí)操作,幫助開(kāi)發(fā)者高效處理工作區(qū)與暫存區(qū)的狀態(tài)管理,需要的朋友可以參考下
    2026-02-02
  • 45個(gè)GIT經(jīng)典操作場(chǎng)景使用詳解

    45個(gè)GIT經(jīng)典操作場(chǎng)景使用詳解

    這篇文章主要介紹了45個(gè)GIT經(jīng)典操作場(chǎng)景使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Geohash的原理、算法和具體應(yīng)用探究

    Geohash的原理、算法和具體應(yīng)用探究

    這篇文章主要介紹了Geohash的原理、算法和具體應(yīng)用探究,Geohash可以實(shí)現(xiàn)當(dāng)前手機(jī)應(yīng)用中的查找附近的人功能,需要的朋友可以參考下
    2014-07-07
  • 在VS Code中配置Git的完整步驟記錄

    在VS Code中配置Git的完整步驟記錄

    git是一個(gè)版本管理工具,使用git之前,首先要進(jìn)行配置,這篇文章主要介紹了在VS Code中配置Git的完整步驟,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • PostMan接口測(cè)試用例自動(dòng)轉(zhuǎn)成Python的測(cè)試腳本

    PostMan接口測(cè)試用例自動(dòng)轉(zhuǎn)成Python的測(cè)試腳本

    PosMan做服務(wù)端的自動(dòng)化測(cè)試中,我們可以把Collection里面的測(cè)試用例導(dǎo)入出來(lái),它是JSON的文件,然后我們解析這些JSON文件,讓它自動(dòng)的轉(zhuǎn)成Python測(cè)試代碼,實(shí)現(xiàn)了PostMan里面的接口測(cè)試用例自動(dòng)的轉(zhuǎn)成了Python的測(cè)試腳本,而且?guī)Я藬嘌?/div> 2024-06-06
  • 關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator使用教程

    關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator使用教程

    這篇文章主要介紹了關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator的使用教程,有需要的朋友可以借鑒參考下,希望可以對(duì)廣大讀者朋友能夠有所幫助
    2021-09-09
  • 使用MASA?Blazor開(kāi)發(fā)查詢(xún)表格頁(yè)

    使用MASA?Blazor開(kāi)發(fā)查詢(xún)表格頁(yè)

    MASA?Blazor?是一個(gè)基于?Material?Design?設(shè)計(jì)語(yǔ)言的?Blazor?組件庫(kù),dotNET開(kāi)發(fā)者只需或者甚至不需要懂得?javascript?就能開(kāi)發(fā)一個(gè)企業(yè)級(jí)中后臺(tái)系統(tǒng),這篇文章主要介紹了使用MASA?Blazor開(kāi)發(fā)一個(gè)標(biāo)準(zhǔn)的查詢(xún)表格頁(yè),需要的朋友可以參考下
    2022-04-04
  • 關(guān)于Typora中l(wèi)atex的用法與常用語(yǔ)法

    關(guān)于Typora中l(wèi)atex的用法與常用語(yǔ)法

    這篇文章主要介紹了關(guān)于Typora中l(wèi)atex的用法與常用語(yǔ)法,typora使用latex進(jìn)行公式的編寫(xiě),本文說(shuō)明了常用的語(yǔ)法,需要的朋友可以參考下
    2023-04-04
  • 微信小程序 iPhoneX底部安全區(qū)域(底部小黑條)適配(一分鐘解決)

    微信小程序 iPhoneX底部安全區(qū)域(底部小黑條)適配(一分鐘解決)

    iPhone X 對(duì)于微信小程序的tabbar來(lái)說(shuō),會(huì)被底部小黑條覆蓋,需要處理,大概思路是,得到手機(jī)型號(hào)、分別判斷樣式。這篇文章主要介紹了微信小程序 iPhoneX底部安全區(qū)域(底部小黑條)適配問(wèn)題,需要的朋友可以參考下
    2019-10-10
  • 如何巧用vimdiff來(lái)替代原始的svn diff和git diff(效率提升)

    如何巧用vimdiff來(lái)替代原始的svn diff和git diff(效率提升)

    這篇文章主要介紹了如何巧用vimdiff來(lái)替代原始的svn diff和git diff(效率提升),需要的朋友可以參考下
    2020-07-07

最新評(píng)論

乳山市| 梨树县| 巴林左旗| 合作市| 保山市| 台东县| 克什克腾旗| 泸西县| 商南县| 同江市| 永登县| 东丰县| 嘉义市| 延安市| 竹山县| 肥乡县| 河东区| 鹤庆县| 浑源县| 南岸区| 百色市| 嘉善县| 桐庐县| 花莲市| 武威市| 高州市| 靖安县| 广昌县| 江城| 平舆县| 东乡族自治县| 巴马| 凌云县| 新邵县| 交城县| 佛坪县| 陆河县| 乌拉特中旗| 鄂伦春自治旗| 五莲县| 百色市|