meterSphere(四)接口自動化,測試場景自定義變量


需求

同一個接口,要輸入不同的測試數據,可以用測試場景中的自定義變量來進行參數化
image

自定義變量類型

常量

  • 定義
    1)變量名:變量名稱,后續調用直接 ${變量名} 調用

    2)值:變量值,可以使用Jmeter的內置函數
    image

  • 調用
    直接使用 ${變量名} 調用

  • 舉個例子
    新增一個常量,變量名為 test_constant ,報文中可以用 ${test_constant} 調用

列表

定義

  • 變量名:列表的變量名稱
  • 值:多個枚舉值之間用英文逗號分隔

調用

  • foreach循環中,直接使用 for i in 變量名,i會依次取得列表中的值;
  • 可以直接用 ${變量名_n}的形式,取得對應的值,n為值在列表中的位置,從1開始

舉個例子

列表定義變量名為 test_list,變量值為 cat,dog,rabbit

  • ForEach循環

    直接for value in test_list, value會依次取得列表中的值,即cat,dog,rabbit

    image

    運行之后,這個用例會執行三次,

    image

    請求的報文依次為:

    {"test_list":"cat"}
    {"test_list":"dog"}
    {"test_list":"rabbit"}
    
    
  • 獲取列表中指定位置的值

    指定位置從1開始

    比如,要獲取dog,那么變量直接寫成${test_list_2}

    image

CSV

定義

  • 變量名:CSV文件的變量名似乎並沒有什么實際的用途,因為調用的時候是不需要用到這個變量名的

  • 配置:上傳的一個CSV文件,CSV文件首行就是列名,后續直接使用 ${列名}調用變量

  • Encoding:文件編碼,可不填

  • 分隔符:默認逗號,一般不改

  • 是否允許帶引號 : 默認False

調用

在循環計數器中調用,直接使用 ${列名}調用

舉個例子

  • 新建CSV文件
    image

  • 接口場景中,添加一個循環控制器,
    image

  • 變量用 ${列名} 調用,接口請求報文如下:

{
	"facilityCode": "${header_facilityCode}",
	"companyCode": "${header_companyCode}",
	"clientCode": "${header_clientCode}",
	"sourcePlatformCode": "${header_sourcePlatformCode}"
}
  • 循環三次,每次依次取得CSV中中每一行的值,接口請求報文如下:
    image
{
	"facilityCode": "basic_facility_01",
	"companyCode": "basic_company_01",
	"clientCode": "OFS",
	"sourcePlatformCode": "OFS"
}

// 這個地方有個小問題,我本來是想模擬 "facilityCode":null , 但是貌似使用csv實現不了,還是會變成字符串
{
	"facilityCode": "null",
	"companyCode": "basic_company_01",
	"clientCode": "OFS",
	"sourcePlatformCode": "OFS"
}

// csv中不填,報文就會自動識別成空字符串""
{
	"facilityCode": "",
	"companyCode": "basic_company_01",
	"clientCode": "OFS",
	"sourcePlatformCode": "OFS"
}

計數器

定義

  • 變量名:變量的名稱,后續調用用 ${變量名} 調用

  • 開始:起始值,包含這個值

  • 結束:結束值,包含這個值

  • 增量:即步長

  • 輸出格式:就是格式化,比如,原本准備輸出值 1,輸出格式定義為 000,則輸出的值變成 001

調用

一般在循環計數器中使用,使用 ${變量名} 即可調用,每次循環,循環計數器的值會自動化加一

舉個例子

  • 新建一個循環計數器

image

  • 循環計數器從1到4,如果循環次數超過循環計數器,則從頭再次開始

image

  • 總共循環5次,每次循環的報文如下:

image

{"test_count":"001"}
{"test_count":"002"}
{"test_count":"003"}
{"test_count":"004"}
{"test_count":"001"}

隨機數

定義

  • 變量名:變量的名稱,使用 ${變量名} 調用

  • 最小值:隨機的最小值

  • 最大值:隨機的最大值

  • 輸出格式:就是格式化,比如,原本准備輸出值 1,輸出格式定義為 000,則輸出的值變成 001

調用

直接使用 ${變量名} 調用即可

舉個例子

  • 新建一個隨機數的場景變量 test_random ,隨機數最小為0,最大為10

image

  • 添加一個循環計數器,請求報文中,直接用 ${test_random}調用
    image

  • 循環3次,每次取得一個隨機數,每次請求的報文如下:
    image

    {"test_random":"6"}
    {"test_random":"0"}
    {"test_random":"1"}
    

總結

以上就是自定義變量的一些用法,但是目前實際測試接口用到的比較少,主要原因如下:

  • 需要測試字段為null的場景,使用csv無法實現,或者說,目前我還沒找到能夠實現的方式;

  • 接口不太規范,不同的測試數據請求接口,得到的結果報文都不太相同,特別是接口返回失敗的時候,msg都不太一樣,導致無法使用同一個斷言進行判斷


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM