阅读84 返回首页    go iPhone_iPad_Mac_apple


参数化__脚本编写_使用手册_性能测试-阿里云

返回企业版测试脚本

按模板编写脚本参数化

如果想让测试数据更丰富可对脚本进行参数化。参数化步骤如下:

  • 上传参数文件,目前仅支持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 高级属性__脚本编写_使用手册_性能测试-阿里云