閱讀84 返回首頁    go 魔獸


參數化__腳本編寫_使用手冊_性能測試-阿裏雲

返回企業版測試腳本

按模板編寫腳本參數化

如果想讓測試數據更豐富可對腳本進行參數化。參數化步驟如下:

  • 上傳參數文件,目前僅支持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’)

代碼示例:

  1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # PTS Script Version 1.0
  4. # Trunner auto-generated test script at Tue Jul 12 09:53:55 CST 2016
  5. from java.lang import String
  6. from java.util import Random
  7. from java.util import Date
  8. # PTS腳本SDK:框架API、常用HTTP請求/響應處理API
  9. from util import PTS
  10. from HTTPClient import NVPair
  11. from HTTPClient import Cookie
  12. from HTTPClient import HTTPRequest
  13. from HTTPClient import CookieModule
  14. from HTTPClient import ShutdownException
  15. # PTS對參數化的相關支持
  16. from com.aliyun.pts import DsvReader
  17. from com.aliyun.pts import ParamManager
  18. # 腳本初始化段,可以設置壓測引擎的常用HTTP屬性
  19. PTS.HttpUtilities.setUrlEncoding('utf-8')
  20. PTS.HttpUtilities.setFollowRedirects(True)
  21. PTS.HttpUtilities.setTimeout(120000)
  22. # PTS.HttpUtilities.setKeepAlive(False)
  23. # PTS.HttpUtilities.setUseCookieModule(False)
  24. # PTS.HttpUtilities.setProxyServer('localhost', 8888)
  25. # PTS.Context.setParamDirectory("/Users/fei/Work/trunner/data")
  26. # 支持socket測試, 如TCPUDP等協議
  27. # import socket
  28. # 設置係統編碼
  29. import sys
  30. reload(sys)
  31. sys.setdefaultencoding('utf-8')
  32. params = ParamManager.getInstance()
  33. expiryDate = Date()
  34. expiryDate.year += 10
  35. params.addProvider(DsvReader(u'FileName.csv'))
  36. class TestRunner:
  37. # TestRunner對象的初始化方法,每個線程在創建TestRunner後執行一次該方法
  38. def __init__(self):
  39. self.threadContext = PTS.Context.getThreadContext()
  40. # 主體壓測方法,每個線程在測試生命周期內會循環調用該方法
  41. def __call__(self):
  42. PTS.Data.delayReports = 1
  43. # 請在此處調用事務方法
  44. #statusCode = self.action_name()
  45. #PTS.Framework.setExtraData(statusCode)
  46. PTS.Data.report()
  47. PTS.Data.delayReports = 0
  48. params.nextRecord(u'FileName.csv')
  49. PTS.Logger.inf("username="+params.getParamValue(u'FileName.csv:Field')+"")
  50. # 執行事務的方法,會在__call__主體壓測方法中被調用到
  51. #def action_name(self):
  52. # 請輸入方法內容
  53. # 調用施壓引擎施壓。第一個參數是事務名,可以為中文;第二個參數是執行事務方法的方法名;第三個統一寫TestRunner
  54. #PTS.Framework.instrumentMethod(u'tran_name', 'action_name', TestRunner)

手工編寫腳本參數化技巧

在需要參數化的字符串中用 “%%_參數文件名:參數變量%%” 進行替換,保存腳本(記住要保存腳本)後,會自動轉換成可運行的腳本。例如將參數化用戶名的地方進行日誌輸出:PTS.Logger.info(‘username=%%_UserNameList.csv:username%%’),保存腳本後,會將按照手工編寫腳本參數化的步驟自動進行轉換。

返回企業版測試腳本

最後更新:2016-07-12 09:57:48

  上一篇:go 域名綁定__腳本編寫_使用手冊_性能測試-阿裏雲
  下一篇:go 高級屬性__腳本編寫_使用手冊_性能測試-阿裏雲