loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取
注意:参数必须在双引号中才能用
将字符串保存为参数
lr_save_string("string you want to save", "arg_name");
举例:用参数来替换需要打开的url链接
Action2()
{
lr_save_string("http://172.25.75.2:1080/WebTours/", "web_site");
//打开登录页面
web_url("WebTours",
"URL = {web_site}", //运行出错//改成"URL= {web_site}"即可
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
return 0;
}
运行报错:
Action2.c(6): Error -27226: The "URL = http://172.25.75.2:1080/WebTours/" argument (number 2) is unrecognized or misplaced [MsgId: MERR-27226]
Action2.c(6): web_url("WebTours") highest severity level was "ERROR", 0 body bytes, 0 header bytes [MsgId: MMSG-26388]
解决方法:
"URL = {web_site}",URL和等号”=”之间多出了一个空格,去掉该空格即可。
所以使用lr_eval_string()函数的时候也是使用双引号来调用的。
还可以如下方式
Action2()
{
lr_save_string("http://172.25.75.2:1080/", "web_site");
lr_save_string("WebTours/", "web_name");
//打开登录页面
web_url("WebTours",
"URL={web_site}{web_name}",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
return 0;
}
获取参数值的字符串表识
可用lr_eval_string函数获取参数值的字符串标表示,然后用lr_output_message()函数输出结果
Action2()
{
lr_save_string("http://172.25.75.2:1080/", "web_site");
lr_save_string("WebTours/", "web_name");
lr_output_message(lr_eval_string("获取参数值的字符串表示:{web_site}{web_name}"));
//打开登录页面
web_url("WebTours",
"URL= {web_site}{web_name}",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
return 0;
}
注:如果想获取参数字符串的第一个字母,同c,可以这样:lr_eval_string(“{param}”)[0];
将int型数字保存为参数
lr_save_int(int_number, “param_name”)
例如:
Action2()
{
lr_save_int(0, "int_param");
//打开登录页面
web_url("WebTours",
"URL=http://172.25.75.2:1080/WebTours/",
// "Resource=0",
"Resource={int_parma}",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
return 0;
}
把时间保存为参数
通过lr_save_datetime函数来实现。
函数原型:
void lr_save_datetime(const char *format, int offset, const char *name);
format:期望输出的日期格式,如:%Y、%m、%d、%X等
offset:类似与表示时间的一些关键字常量:
DATE_NOW -> 现在的日期
TIME_NOW -> 现在的时间
ONE_DAY -> 一天的时间
ONE_HOUR -> 一小时的时间
ONE_MIN -> 一分钟的时间
需要注意的是,他们可以单独使用,也可以联合使用
DATE_NOW + TIME_NOW -> 当前时间
DATE_NOW-ONE_DAY -> 昨天
DATE_NOW+ONE_DAY -> 明天
两天前的日期
DATE_NOW-2*(ONE_DAY)、 DATE_NOW-2*24*(ONE_HOUR)、 DATE_NOW-2*24*60*(ONE_MIN)
2个小时后的时间
TIME_NOW+2*(ONE_HOUR)
TIME_NOW+2*60*(ONE_MIN)
name:期望将时间保存到的那个参数的名称
format格式参照表:
Code |
Description |
%a |
day of week, using locale's abbreviated weekday names |
%A |
day of week, using locale's full weekday names |
%b |
month, using locale's abbreviated month names |
%B |
month, using locale's full month names |
%c |
date and time as %x %X |
%d |
day of month (01-31) |
%H |
hour (00-23) |
%I |
hour (00-12) |
%j |
number of day in year (001-366) |
%m |
month number (01-12) |
%M |
minute (00-59) |
%p |
locale's equivalent of AM or PM, whichever is appropriate |
%S |
seconds (00-59) |
%U |
week number of year (01-52), Sunday is the first day of the week. Week number 01 is the first week with four or more January days in it. |
%w |
day of week; Sunday is day 0 |
%W |
week number of year (01-52), Monday is the first day of the week. Week number 01 is the first week with four or more January days in it. |
%x |
date, using locale's date format |
%X |
time, using locale's time format |
%y |
year within century (00-99) |
%Y |
year, including century (for example, 1988) |
%Z |
time zone abbreviation |
%% |
to include the "%" character in your output string |
举例:
Action()
{
lr_save_datetime("%X",TIME_NOW,"time");
lr_save_datetime("%Y-%m-%d",DATE_NOW,"date");
lr_save_datetime("%Y-%m-%d %X",DATE_NOW+TIME_NOW,"datetime");
lr_save_datetime("%Y-%m-%d",DATE_NOW-ONE_DAY,"yesterday");
lr_output_message(lr_eval_string("系统的当前时间为:{time}"));
lr_output_message(lr_eval_string("系统的当前日期为:{date}"));
lr_output_message(lr_eval_string("系统的当前日期,当前时间:{datetime}"));
lr_output_message(lr_eval_string("昨天的日期为:{yesterday}"));
return 0;
}
运行结果:
Starting iteration 1.
Starting action Action.
Action.c(7): 系统的当前时间为:12:27:54
Action.c(8): 系统的当前日期为:2014-10-22
Action.c(9): 系统的当前日期,当前时间:2014-10-22 12:27:54
Action.c(10): 昨天的日期为:2014-10-21
Ending action Action.
Ending iteration 1.
把内容保存为带格式的参数
lr_param_sprintf(param_name,format,var1,var2,…);
示例:
Action2()
{
int index = 56;
char *suffix = "txt";
lr_param_sprintf("NewParam","log_%d.%s",index,suffix);
lr_output_message("The new file name is %s",lr_eval_string("{NewParam}"));
return 0;
}
运行结果:
Starting action Action2.
Action2.c(24): The new file name is log_56.txt
Ending action Action2.
把内容保存到参数数组
这个概念lr9.x后才有
参数数组必须满足以下两个条件:
1.参数必须都是以相同的名字开头,后面接下划线加数字的方式顺序赋值。
2.参数数组必须有一个“参数名_count”的参数来记录数组的长度
相关函数:
lr_paramarr_idx()
//获取参数数组中指定编号的参数的值
lr_paramarr_len()
//获取参数数组的长度
lr_paramarr_random()
//从参数列表中随机获取一个参数
例子:要创建一个访问网站的参数数组,可以编写以下代码
脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" title="loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" border="0">
说明:通过脚本创建了一个名为website的参数数组,并获取编号为2的参数的值,
运行结果:
脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" title="loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" border="0">
此处:web_site
= lr_paramarr_idx("website", 2),等同:lr_eval_string(“{website_2}”);
获取参数数组长度
例子:
Action2()
{
int
array_size = 0;
char
*arr_size_str = NULL;
lr_save_string("www.google.com", "website_1");
lr_save_string("www.google.com", "website_2");
lr_save_string("www.google.com", "website_3");
lr_save_string("www.google.com", "website_4");
lr_save_string("4", "website_count");
array_size = lr_paramarr_len("website");
//输出整数
//1.把结果array_size保存为参数
lr_save_int(array_size, "arr_size");
//2.获取参数的字符串表示
arr_size_str = lr_eval_string("{arr_size}");
//输出结果
lr_output_message(arr_size_str);
return 0;
}
运行结果:
脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" title="loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" border="0">
从参数列表中随机获取一个参数
例子:
Action2()
{
char
*web_site = NULL;
lr_save_string("www.google.com", "website_1");
lr_save_string("www.google.com", "website_2");
lr_save_string("www.google.com", "website_3");
lr_save_string("www.google.com", "website_4");
lr_save_string("4", "website_count");
web_site = lr_paramarr_idx("website", 2);
return 0;
}
运行结果:
脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" title="loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" border="0">
例子:按顺序输出每个参数
Action2()
{
int i
= 0;
lr_save_string("www.google.com", "website_1");
lr_save_string("www.google.com", "website_2");
lr_save_string("www.google.com", "website_3");
lr_save_string("www.google.com", "website_4");
lr_save_string("4", "website_count");
for (i=0; i
{
lr_output_message(lr_paramarr_idx("website", i));
}
return 0;
}
输出结果
脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" title="loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" border="0">
用指针变量存放参数
Action2()
{
char
*pt = NULL;
lr_save_string("hello world", "param");
pt =
"{param}";
lr_output_message(pt);
lr_output_message(lr_eval_string(pt));
return 0;
}
运行结果:
脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" title="loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取" border="0">
loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取的更多相关文章
- loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取Part 2
脚本开发-参数化之将内容保存为参数.参数数组及参数值获取 by:授客 QQ:1033553122 ----------------接 Part 1--------------- 把内容保存到参数数组 ...
- loadrunner脚本中参数化和返回值输出log到外部文件
loadrunner脚本中参数化和返回值输出log到外部文件 很多时候,我们在做性能测试之前,需要造数据,但是使用的这些参数化数据和生成的返回数据在后面的测试都会用的,所以我们需要在造数据过程中,将参 ...
- loadrunner 脚本优化-参数化之Parameter List参数同行取值
脚本优化-参数化之Parameter List参数同行取值 by:授客 QQ:1033553122 select next row 记录选择方式 Same line as,这个选项只有当参数多余一个时 ...
- Loadrunner脚本开发规范
Loadrunner脚本开发规范 目录 1.一般约定... 3 2.代码注释约定... 4 3.格式化代码... 5 1.一般约定 1.1具体脚本规则,必须在具体代码中加注释,以便脚本开发人员阅读和理 ...
- Loadrunner 脚本开发-从文件读取数据并参数化
脚本开发-从文件读取数据并参数化 by:授客 QQ:1033553122 直接上代码: char* testfn() { int count, total = 0; //char buffer[1 ...
- loadrunner 脚本优化-参数化方法
脚本优化-参数化方法 by:授客 QQ:1033553122 方法一 1.确定需要参数化的内容 2.选中需要参数化的内容 3.右键选中的内容->Replace with a Parameter- ...
- loadrunner 脚本开发-文件下载
脚本开发-文件下载 by:授客 QQ:1033553122 下载简介 对 HTTP协议来说,无论是下载文件或者请求页面,对客户端来说,都只是发出一个GET请求,并不会记录点击后的“保存”.“另存为操作 ...
- loadrunner 脚本开发-基本知识
脚本开发-基本知识 1)编码工具设置 自动补全输入Tools->General Options->Environment->Auto complete word 显示功能语法Tool ...
- Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本
脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...
随机推荐
- verilog语法实例学习(7)
常用的时序电路介绍 组合电路:这类电路的输出信号值仅却决于输入端信号值. 时序电路:时序电路的输出值不仅取决于当前的输入值,还取决于电路的历史状态,所以时序逻辑电路中包含保存逻辑信号值的存储元件,存储 ...
- go语音之进阶篇爬百度贴吧单线程版本
一.爬什么? 1.明确目标 : 知道你准备在那个范围或者网站去搜索 2.爬: 将所有的网站的内容全部爬下来 3.取:去掉对我们没用处的数据 4.处理数据:按照我们想要的方式存储或使用 二.百度贴吧小爬 ...
- 【Spark】SparkStreaming-如何使用checkpoint
SparkStreaming-如何使用checkpoint sparkstreaming checkpoint 默认_百度搜索 spark streaming中使用checkpoint - HarkL ...
- 集成学习总结 & Stacking方法详解
http://blog.csdn.net/willduan1/article/details/73618677 集成学习主要分为 bagging, boosting 和 stacking方法.本文主要 ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十四)Structured Streaming:Encoder
一般情况下我们在使用Dataset<Row>进行groupByKey时,你会发现这个方法最后一个参数需要一个encoder,那么这些encoder如何定义呢? 一般数据类型 static ...
- THINKPHP 错误:Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'
最近公司同事将我之前使用Thinkphp开发的一个项目从香港迁移到国内阿里云服务器上去,结果网站所有地址打开全部一片空白 跟同事确认了PHP版本,Mysql版本等都是跟迁移前的配置一样的,最终经过我查 ...
- Windows远程桌面连接的利器-mRemote
mRemoteNG是Windows平台下一款开源的支持多标签.多协议的远程连接管理器.平时我们可能安装N多款管理工具,如putty.SecureCRT.xshell.SSHshell.mstsc.ex ...
- [Node.js] process.nextTick for converting sync to async
For example we have a function to check the filesize: const fs = require('fs'); function fileSize (f ...
- 浅谈压缩感知(七):常见测量矩阵的MATLAB实现
1.随机高斯测量矩阵 function [ Phi ] = GaussMtx( M,N ) %GaussMtx Summary of this function goes here % Generat ...
- ExtJS学习笔记2:响应事件、使用AJAX载入数据
响应事件: 1.设置一个html标记 <div id="my-div">Ext JS 4 Cookbook</div> 2.使用get函数获取此标记对象 v ...