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 2016
from java.lang import String
from java.util import Random
from java.util import Date
# PTS腳本SDK:框架API、常用HTTP請求/響應處理API
from util import PTS
from HTTPClient import NVPair
from HTTPClient import Cookie
from HTTPClient import HTTPRequest
from HTTPClient import CookieModule
from HTTPClient import ShutdownException
# PTS對參數化的相關支持
from com.aliyun.pts import DsvReader
from 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 sys
reload(sys)
sys.setdefaultencoding('utf-8')
params = ParamManager.getInstance()
expiryDate = Date()
expiryDate.year += 10
params.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 = 0
params.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-阿裏雲