日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

接口出參

在實際壓測場景中,您可以使用出參功能來提取壓測接口的返回信息作為下一個請求的輸入。在一個壓測請求API中可以定義多個出參。本文介紹如何提取出參。

出參配置

image出參的配置項說明如下。

配置項

說明

出參名

可包含英文字母、數字、下劃線(_)和短劃線(-),并且只能以字母開頭。

來源

標記Response的解析方式,可選擇以下類型:

  • Body : JSON :以JSON格式解析Response Body。

  • Body : TEXT:以TEXT格式解析Response Body。

  • Header : K/V :以鍵值對格式解析Response Header。

    說明

    當來源使用Header : K/V時,解析表達式的格式必須是標準的MIME類型。

  • Cookie : K/V :以鍵值對格式解析Cookie。

  • 響應狀態碼:提取Response中的狀態碼。

解析表達式

從Response截取需要的內容,對應到當前變量。

第幾個匹配項

僅用于來源Body : TEXT時。若上一步定義的解析表達式在Response中有多個匹配時,指定第幾個字符串作為出參。從0開始,-n表示倒數第n個,取值區間為 [-99,99]。如果想要取隨機匹配項,請填寫random。

Body : JSON類型

JSON格式解析支持兩種類型的返回信息:application/json和text/json。

PTS目前支持新舊版本兩種JSONPath的寫法,為了說明新版與舊版JSONPath之間的區別,下面分別給出兩者的使用示例。

建議您使用新版JSONPath寫法。

JSONPath表達式(新版)

以此處提供的JSON示例為例,您可以在下方表格中查看新版JSONPath的語法及說明。

單擊展開JSONPath完整示例

{
    "menu":{
        "header":"SVG Viewer",
        "items":[
            {
                "id":0
            },
            {
                "id":1,
                "label":"Open New"
            },
            null,
            {
                "id":2,
                "label":"Zoom In"
            },
            {
                "id":3,
                "label":"Zoom Out"
            },
            {
                "id":4,
                "label":"Original View"
            },
            null,
            {
                "id":5
            },
            {
                "id":6
            },
            {
                "id":7
            },
            null,
            {
                "id":8,
                "label":"Find..."
            },
            {
                "id":9,
                "label":"Find Again"
            },
            {
                "id":10
            },
            {
                "id":11,
                "label":"Copy Again"
            },
            {
                "id":12,
                "label":"Copy SVG"
            },
            {
                "id":13,
                "label":"View SVG"
            },
            {
                "id":14,
                "label":"View Source"
            },
            {
                "id":15,
                "label":"Save As"
            },
            null,
            {
                "id":16
            },
            {
                "id":17,
                "label":"About Adobe CVG Viewer..."
            }
        ]
    }
}

JSONPath

說明

$

根對象,例如$.menu.header對應的值為SVG Viewer。

[num]

數組訪問,其中num是數字。例如$.menu.items[0]對應的值為{"id":0}。

[num0,num1,num2...]

數組多個元素訪問,其中num是數字,返回數組中的多個元素。例如$.menu.items[0,3],返回結果是長度為2的數組,第2個元素為 {"id":2,"label":"Zoom In"}

[start:end]

數組范圍訪問,其中start和end是開始下標和結束下標,返回數組中的多個元素。例如$.menu.items[0:3],返回結果是長度為3的數組,第1個元素為{"id":1,"label":"Open New"} ,第2個元素為null

[?(@.key)]

對象屬性非空過濾。例如$.menu.items[?(@.label)],返回結果是長度為12的數組,第1個元素為{"id":1,"label":"Open New"}

[?(@.key > 123)]

數值類型對象屬性比較過濾,比較操作符支持=、!=、>、>=、<、<=。例如$.menu.items[?(@.id > 5)],返回結果是長度為12的數組,第1個元素為{"id":6}。

[?(@.key = '123')]

字符串類型對象屬性比較過濾,比較操作符支持=、!=、>、>=、<、<=。例如$.menu.items[?(@.label = 'Copy Again')],返回結果是長度為1的數組,第1個元素為 {"id":11,"label":"Copy Again"}。

[?(@.key like 'aa%')]

字符串類型like過濾,通配符只支持%,支持not like。例如$.menu.items[?(@.label like 'Copy%')],返回結果是長度為2的數組,第1個元素為{"id":11,"label":"Copy Again"};$.menu.items[?(@.label not like 'Copy%')]返回結果是長度為10的數組,第1個元素為{"id":1,"label":"Open New"}

[?(@.key rlike 'regexpr')]

字符串類型正則匹配過濾,正則語法為jdk,支持not rlike。例如$.menu.items[?(@.label rlike 'Copy ([A-Z]+)')]返回結果是長度為1的數組,第1個元素為{"id":12,"label":"Copy SVG"}$.menu.items[?(@.label not rlike 'Copy ([A-Z]+)')]返回結果是長度為11的數組,第1個元素為{"id":1,"label":"Open New"}。

[?(@.key in ('v0', 'v1'))]

IN過濾,支持字符串和數值類型,支持not in。例如$.menu.items[?(@.id in (1, 2))],返回結果是長度為2的數組,第1個元素為{"id":1,"label":"Open New"};$.menu.items[?(@.id not in (1, 2))]返回結果是長度為16的數組,第1個元素為{"id":0}。

[?(@.key between 234 and 456)]

BETWEEN過濾,支持數值類型,支持not between。例如:$.menu.items[?(@.id between 0 and 3)],返回結果是長度為4的數組,第1個元素為{"id":0};i返回結果是長度為15的數組,第1個元素為{"id":0}。

length() 或者 size()

數組長度。例如$.menu.items.size()$.menu.items.length()均返回22。

..

深度屬性訪問。例如$.menu.items..id返回結果是長度為18的數組,數組元素為每個ID對應的值。

*

對象的所有屬性。例如$.menu.items.*返回結果是items對應的值。

randomIndex()

數組中的隨機元素。例如$.menu.items[randomIndex()]返回items對應數組的隨機元素。

['key']

屬性訪問。例如$['menu']['items'],返回結果是items對應的值。

['key0','key1']

多個屬性訪問。例如$['menu']['items'][3]['id', 'label']返回結果是長度為2的數組,其中第2個元素為"Zoom In"。

說明

$.store.book[0].title$['store']['book'][0]['title']兩種寫法的語義是相同的。

JSONPath表達式(舊版)

以此處提供的JSON示例為例,您可以在下方表格中查看舊版JSONPath的語法及說明。

{
    "info": "success",
    "message": "處理成功",
    "data": {
        "id":13509, "code":0,
        "items": [
            {"name": "name1", "value": "1234"},
            {"name": "name2", "value": "8448"},
            {"name": "name3", "value": "1298"},
            {"name": "name4", "value": "3049"},
            {"name": "name5", "value": "7648"}
        ]
    }
}
            

期望獲取出參的位置

舊版解析表達式

新版解析表達式(供對比參考)

獲取info的值

info

$.info

獲取data的ID的值

data.id

$.data.id

獲取items第一個對象(支持相對位置)的value的值

data.items[0].value

$.data.items[0].value

獲取items倒數第二個對象(支持相對位置)的value的值

data.items[-2].value

不支持

獲取items整個數組

data.items[ALL]

$.data.items[*]

獲取items數組中隨機一個對象

data.items[RANDOM]

$.data.items[randomIndex()]

Body : TEXT類型

TEXT格式解析支持任意文本格式且可使用正則表達式提取。當一個正則表達式有多個匹配項時,可指定第幾個匹配項,默認用0表示匹配第一個。

API的Response示例如下:

<input name="id" value="34729XXXX">
<input name="token" value="acdfo4dfopasdf44dXXXX">
...
<script>
    var planId=4587;
    var planId=5689;
    var planId=8906;
</script>
            

出參的值

解析表達式

匹配數字

獲取name為ID的value

<input name="id" value="([0-9]*)">

0

獲取name為Token的value

name="token" value="([A-Za-z0-9]*)"

0

獲取第三個PlanID的值

var planId=([0-9]*);

2

隨機PlanID的值

var planId=([0-9]*);

random

格式規范:

  • 順序匹配原則:按照順序匹配出參信息。一旦匹配到之后即賦予該出參變量值,不會再匹配后續的信息,故需保證解析表達式的唯一性(除非多個中選第一個即可)。

  • 被匹配的文本內容不能包含大括號({})、小括號(())等特殊字符。

  • 使用正則表達式提取JSON類型的Response時,無需在K/V間隔的冒號后面加空格(JSON格式化展現中加入空格是為了展現優化)。

Cookie : K/V和Header : K/V類型

Cookie : K/V和Header : K/V分別用于提取Cookie字段和Header字段,解析表達式中直接寫需要提取的Key即可。例如,Cookie信息為token=1234;path=/,需要提取Token的值,則解析表達式直接填寫token即可。

響應狀態碼類型

響應狀態碼支持提取請求的狀態碼,一般情況下用于檢查點或者條件跳轉(不同狀態碼返回不同頁面信息)。

JDBC節點出參

從SQL查詢結果提取出參,需要選擇上文介紹的Body : JSON類型,查詢結果對應JSON數據結構關系如下:

{
    "data": [
        
         {
             "列名1": "value",
             "列名2": "value"
           },
         
           {
              "列名1": "value",
              "列名2": "value"
           }
           ...
  ]
}

示例:SQL查詢結果如下,希望解析第一行name列的值“name1”作為出參。

id

name

1

name1

2

name2

出參表達式為:

$.data[0].name

出參調試

若您不能判斷解析表達式是否正確時,可以在場景調試中測試解析表達式并設置出參。操作步驟如下:

  • 單擊創建PTS場景頁面下方的調試場景,然后在彈出的場景調試對話框中單擊場景名稱,對話框右側將顯示詳細信息,在右側對話框中,選中某條API,單擊點此去測試出參正則表達式。

  • 在彈出的對話框,選擇來源格式,填寫正則表達式,指定為第幾個匹配項,填寫出參參數名,單擊測試表達式。通過響應詳情匹配結果,預判提取的內容是否符合預期。

  • 若需重新設置出參,則單擊同步出參配置,將此正則表達式同步到該API的出參列表中。

    說明

    場景調試結束后,如有同步的出參,需返回壓測場景配置頁簽,在對應的API出參定義頁簽下,設置出參名。

出參示例

在理財業務中,需要根據用戶的消費能力,推薦適當產品。則需要在前置接口中提取出消費能力等級作為出參,在當前的產品推薦接口中,使用該出參。

操作步驟如下:

  1. 登錄PTS控制臺,選擇性能測試 > 創建場景,然后單擊PTS壓測。

  2. 創建PTS場景頁面,添加消費能力(含出參)產品推薦API,并填寫對應的URL。

  3. 消費能力(含出參)API中,基于請求的響應詳情,提取消費能力信息作為出參。填寫出參名(如output)和具體的解析表達式(如data.items[0].value)。

  4. 單擊創建PTS場景頁面左下角的參數列表,在彈出的自定義參數頁簽可查看已創建的出參。單擊出參參數名稱(如output)或復制圖標圖標,系統將自動復制參數內容。

  5. 產品推薦API的Body中帶入已提取的出參,在Body定義編輯框內,粘貼參數內容。image

    此外,您也可以對Body內容進行編輯,如組合字符串、參數或函數等。