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

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

 更新時(shí)間:2024年06月01日 11:20:48   作者:無涯技術(shù)博客  
PosMan做服務(wù)端的自動(dòng)化測(cè)試中,我們可以把Collection里面的測(cè)試用例導(dǎo)入出來,它是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è)試用例越來越多,以及工作的需求,我們需要把PostMan中的測(cè)試用例需要遷移到腳本的方式實(shí)現(xiàn),平常的遷移思路是我們?cè)谀_本里面把之前的接口測(cè)試用例重新實(shí)現(xiàn),這樣相對(duì)而言它的成本是比較高的,特別是涉及的自動(dòng)化測(cè)試用例特別多的時(shí)候。我們可以把Collection里面的測(cè)試用例導(dǎo)入出來,它是JSON的文件,然后我們解析這些JSON文件,讓它自動(dòng)的轉(zhuǎn)成Python測(cè)試代碼,從而輕松的完成這樣的一個(gè)過程。被測(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='用戶名不能為空')
      parser.add_argument('password',type=str,required=True,help='賬戶密碼不能為空')
      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名稱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)用戶名不能為空",
         "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ù)類型,然后操作字典,這個(gè)過程相對(duì)來說不難,具體實(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è)過程的思路其實(shí)非常簡(jiǎn)單,就是對(duì)JSON的文件處理成字典,然后利用Pytest框架的參數(shù)化來循環(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)用戶名不能為空",
         "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": "用戶名不能為空"
            }
         }
      },
      {
         "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": "賬戶密碼不能為空"
            }
         }
      },
      {
         "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è)試代碼,見如下圖展示的執(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功能

    在開發(fā)過程中,Git的暫存和Stash功能是管理代碼變更的核心工具,本文將系統(tǒng)梳理git add、git stash及相關(guān)高級(jí)操作,幫助開發(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的完整步驟,文中通過圖文介紹的非常詳細(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)入出來,它是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)畫狀態(tài)機(jī)Animator使用教程

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

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

    使用MASA?Blazor開發(fā)查詢表格頁

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

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

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

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

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

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

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

最新評(píng)論

临沭县| 满洲里市| 宜良县| 石棉县| 铜鼓县| 岳阳市| 出国| 宜宾县| 宁南县| 定安县| 长寿区| 大邑县| 上林县| 夏津县| 广饶县| 郯城县| 定陶县| 宜都市| 奉贤区| 饶阳县| 松阳县| 垦利县| 手机| 和硕县| 富锦市| 和平区| 长岭县| 汝城县| 乌鲁木齐市| 甘孜| 昌吉市| 江华| 新平| 富锦市| 宁国市| 察雅县| 昂仁县| 陇南市| 咸丰县| 南陵县| 台南县|