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服务端简单实 ...
随机推荐
- APPLE框架之高效便捷的Repository解决方案
原文地址:http://perfy315.iteye.com/blog/1460226 Spring Data JPA 转至:http://note.sdo.com/u/855924134/n/P15 ...
- Risc-V指令集
https://riscv.org/specifications/ Risc-V文档包括:用户层指令集文档和特权架构文档,下面这两个文件的官网链接. User-Level ISA Specificat ...
- C# 遍历文件夹非递归实现(采用队列的广度优先算法)(转)
一.实现思路: 1. 创建一个队列(使用C# 队列类 Queue,需要使用命名空间 System.Collections.Generic): 2. 把起始文件夹名称排入队中: 3. 检查队列中是否有文 ...
- 如何回收vRealize Automation里被分配出去了的IP地址
在vRealize里写代码部署虚机,时间长了,便出现了很多虚机在vCenter里不存在,但在vRealize里还存在的这台虚机的注册信息的现象.最直接的后果是,这些影子虚机会占着IP池里的IP地址不放 ...
- android 巧用动画使您app风骚起来
巧用Android的自定义动画,使你更加的有动感,是大多数Android开发人员的目标,那怎么做到这点.请听下文分解: 3.0以前,android支持两种动画模式,tween animation(幅间 ...
- 【Java】Java-fastjson-基本使用方法
Java-fastjson-基本使用方法 fastjson maven_百度搜索 Maven Repository: com.alibaba » fastjson » 1.2.44 fastjson ...
- Kaggle 商品销量预测季军方案出炉,应对时间序列问题有何妙招
https://www.leiphone.com/news/201803/fPnpTdrkvUHf7uAj.html 雷锋网 AI 研习社消息,Kaggle 上 Corporación Favorit ...
- wamp因配置错误而导致apache无法启动的问题
在使用wamp搭建一个PHP项目环境时,却出现了apache无法启动的问题 通过查看window的错误日志才发现apache出现了错误 错误的原因说的很清楚,是因为配置文件中的Director ...
- ORA-16038: log 3 sequence# 103 cannot be archived
[size=large]今天在自己机器做了个实验,插入10万条,由于空间少,重启数据库时出现: [size=x-large]SQL> startup ORACLE instance starte ...
- iOS社交app技术合伙人笔试题
理想状况当然是找到有管理能力且还在写代码的架构师了,然而假设有这种人,他自己能发起项目了.你要拉上他还真难.满足一定条件就可以了,别追求完美. 还有比这更完美的吗?请生产这种机器人: 性格开朗(开朗≠ ...