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-阿里云