84
新東方
參數化__腳本編寫_使用手冊_性能測試-阿裏雲
按模板編寫腳本參數化
如果想讓測試數據更豐富可對腳本進行參數化。參數化步驟如下:
- 上傳參數文件,目前僅支持csv格式。請使用UE或Notepad工具(不要用Excel)進行編輯,每列參數化列值以英文逗號分隔;注意如果參數文件內容包含中文,參數文件請使用UTF-8無BOM格式編碼。參數文件第一行為參數變量,可增加多個參數變量,首行不得超過255個字符;從第二行開始為參數值,可增加多個參數值,腳本運行時會讀取對應參數變量的參數值按從上往下的順序執行。可上傳多個參數文件,上傳完畢後參數文件默認為啟用。每個參數文件大小不得超過60M。一個腳本最多10個參數文件,不得重名,重名會覆蓋。


注:參數文件循環啟用,執行任務會循環使用該參數文件的參數值。參數文件循環不啟用,執行任務隻會運行一次該參數文件的參數值,然後任務停止。
- 在請求鏈接中選中要進行參數化的參數值,然後點擊參數化按鈕進行參數化。

- 在參數化窗口選擇參數文件及參數變量,參數變量可通過係統自動讀取參數文件獲得也可手工輸入。

- 係統自動完成替換,替換格式為“%%_參數文件名:參數變量%%”。

- 一個參數文件或參數變量可用於多個不同鏈接裏,一個鏈接也可對應多個不同的參數文件或參數變量。
按手工編寫腳本參數化
- 上傳參數文件,跟按模板編寫一樣。
- 導入如下類庫:
from com.aliyun.pts import DsvReader
from com.aliyun.pts import ParamManager - 加載參數化文件:
params = ParamManager.getInstance()
params.addProvider(DsvReader(u’query-user1.csv’)) - 參數化文件指針向下移一行,注意隻需要調用一次:
params.nextRecord(u’query-user1.csv’) - 獲取參數化值name = params.getParamValue(u’query-user1.csv:userpassword’)
代碼示例:
#! /usr/bin/env python# -*- coding: utf-8 -*-# PTS Script Version 1.0# Trunner auto-generated test script at Tue Jul 12 09:53:55 CST 2016from java.lang import Stringfrom java.util import Randomfrom java.util import Date# PTS腳本SDK:框架API、常用HTTP請求/響應處理APIfrom util import PTSfrom HTTPClient import NVPairfrom HTTPClient import Cookiefrom HTTPClient import HTTPRequestfrom HTTPClient import CookieModulefrom HTTPClient import ShutdownException# PTS對參數化的相關支持from com.aliyun.pts import DsvReaderfrom com.aliyun.pts import ParamManager# 腳本初始化段,可以設置壓測引擎的常用HTTP屬性PTS.HttpUtilities.setUrlEncoding('utf-8')PTS.HttpUtilities.setFollowRedirects(True)PTS.HttpUtilities.setTimeout(120000)# PTS.HttpUtilities.setKeepAlive(False)# PTS.HttpUtilities.setUseCookieModule(False)# PTS.HttpUtilities.setProxyServer('localhost', 8888)# PTS.Context.setParamDirectory("/Users/fei/Work/trunner/data")# 支持socket測試, 如TCPUDP等協議# import socket# 設置係統編碼import sysreload(sys)sys.setdefaultencoding('utf-8')params = ParamManager.getInstance()expiryDate = Date()expiryDate.year += 10params.addProvider(DsvReader(u'FileName.csv'))class TestRunner:# TestRunner對象的初始化方法,每個線程在創建TestRunner後執行一次該方法def __init__(self):self.threadContext = PTS.Context.getThreadContext()# 主體壓測方法,每個線程在測試生命周期內會循環調用該方法def __call__(self):PTS.Data.delayReports = 1# 請在此處調用事務方法#statusCode = self.action_name()#PTS.Framework.setExtraData(statusCode)PTS.Data.report()PTS.Data.delayReports = 0params.nextRecord(u'FileName.csv')PTS.Logger.inf("username="+params.getParamValue(u'FileName.csv:Field')+"")# 執行事務的方法,會在__call__主體壓測方法中被調用到#def action_name(self):# 請輸入方法內容# 調用施壓引擎施壓。第一個參數是事務名,可以為中文;第二個參數是執行事務方法的方法名;第三個統一寫TestRunner#PTS.Framework.instrumentMethod(u'tran_name', 'action_name', TestRunner)
手工編寫腳本參數化技巧
在需要參數化的字符串中用 “%%_參數文件名:參數變量%%” 進行替換,保存腳本(記住要保存腳本)後,會自動轉換成可運行的腳本。例如將參數化用戶名的地方進行日誌輸出:PTS.Logger.info(‘username=%%_UserNameList.csv:username%%’),保存腳本後,會將按照手工編寫腳本參數化的步驟自動進行轉換。
最後更新:2016-07-12 09:57:48
上一篇:
域名綁定__腳本編寫_使用手冊_性能測試-阿裏雲
下一篇:
高級屬性__腳本編寫_使用手冊_性能測試-阿裏雲
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲