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服务端简单实 ...
随机推荐
- OpenGL教程(25) skybox
原帖地址:http://ogldev.atspace.co.uk/www/tutorial25/tutorial25.html Background A skybox is a technique t ...
- pchar,pwidechar,pansichar作为返回参数时内存访问错误
function Test:pachr: var str: string; begin str := 'Test Char'; result:=pchar(str); end; 上面的Te ...
- [leetcode]Spiral Matrix @ Python
原题地址:https://oj.leetcode.com/problems/spiral-matrix/ 题意: Given a matrix of m x n elements (m rows, n ...
- 大数据开发实战:Stream SQL实时开发三
4.聚合操作 4.1.group by 操作 group by操作是实际业务场景(如实时报表.实时大屏等)中使用最为频繁的操作.通常实时聚合的主要源头数据流不会包含丰富的上下文信息,而是经常需要实时关 ...
- Java复习3-类的继承
前言 本次学习面向对象设计的另外一个基本概念:继承(inheritance).这是Java程序设计中的一项核心技术.另外,还要学习反射(reflection)的概念. 继承 类.超类.子类 publi ...
- Topic Model的分类和设计原则
Topic Model的分类和设计原则 http://blog.csdn.net/xianlingmao/article/details/7065318 topic model的介绍性文章已经很多,在 ...
- O2O、C2C、B2B、B2C
一.O2O.C2C.B2B.B2C的区别在哪里? O2O是Online to offline 分为四种运营模式 1.Online to offline 是线上交易到线下消费体验 2.Offline t ...
- 自己定义View时,用到Paint Canvas的一些温故,简单的帧动画(动画一 ,"掏粪男孩Gif"顺便再提提onWindowFocusChanged)
转载请注明出处:王亟亟的大牛之路 之前在绘画的过程中提到了静态的旋转啊,缩放啊,平移等一些效果.那么自己定义的View当然也有动态的效果也就是我们的Animation.经常使用的有三种 View An ...
- Rust 的安装和使用举例
一.环境 二.安装 $curl -sSf https://static.rust-lang.org/rustup.sh | sh Welcome to Rust. This script will d ...
- C/C++——程序的内存分配
C/C++程序内存分配 一.预备知识-程序的内存分配 一个由c/C++编译的程序占用的内存分为下面几个部分 1.栈区(stack):由编译器自己主动分配释放 ,存放函数的參数值,局部变量的值等.其操作 ...