参数化__脚本编写_使用手册_性能测试-阿里云
按模板编写脚本参数化
如果想让测试数据更丰富可对脚本进行参数化。参数化步骤如下:
- 上传参数文件,目前仅支持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-阿里云