关闭

LR参数和变量

标签: loadrunner
103人阅读 评论(0) 收藏 举报
分类:

一、参数:

 

1. 在LR函数中可以直接使用参数。参数必须在双引号“”中才能应用。大部分情况下,可以直接用参数代替函数中双引号内的数据。如下使用方法:

    lr_save_string("http://www.baidu.com","url");     web_url("test","URL={url}",LAST);

2. 参数是全局的,同一个脚本的任何一个action都能使用。

3. 在VuGen中,默认带有{}的字符串为参数。

4. 将一个字符串、数字、日期写入一个参数保存的函数分别为:lr_save_string();   lr_save_int();   lr_save_datetime();

5. 参数数组(LR9.x后出现)的三个函数:

    lr_paramarr_len("param_name");参数数组的长度。(既param_name_count)     lr_paramarr_idx("param_name",i);数组中编号为i的参数值。     lr_paramarr_random("param_name");数组中随机一个参数值。

 

二、变量

 

1. 变量是C语言的,无法直接运用在系统函数中。如下使用方法:

   char  url[100];    strcpy(url,"URL=http://www.baidu.com");    web_url("test",url,LAST);

2. 变量是局部的,只能在定义的那个action中使用。要是希望整个脚本共用,则应该在globals.h中定义变量。

 

三、参数与变量的使用方法

 

1. 字符型变量和参数的转换

   lr_save_string("teststring","param");  将字符串teststring保存到参数param中    lr_eval_string("{param}");  取出参数param中的值

2. 整型变量和参数的转换

    int x;     x = 10;     lr_save_int(x,"param");  将整形变量保存到参数param中     x = atoi(lr_eval_string("{param}"));  取出参数param中的数值保存到变量x

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
今天琢磨了一下LoadRunner的变量、参数的输出与相互转化的问题,写一例题:
 
  /********** 参数和变量传递 ***********/
        Variable( )
        {
 
  char * ip = lr_get_vuser_ip();//获取当前用户的IP地址,保存在IP变量里。
             char * gname = lr_get_host_name ();//获取当前用户的机器名,保存在GNAME变量里。
 
  if(ip)
        /* 参数转变量 */   //RunTime是已定义的参数,下文也可以直接调用
                   lr_vuser_status_message("Ip地址: %s ,参数 : %s",ip,lr_eval_string("{RunTime}"));
               else
                   lr_vuser_status_message("未启动IP欺骗……");
 
  /* 变量转参数 */
            lr_save_string(gname, "GN" );//把变量IP存在“GN”参数里,下文可以直接用 {GN} 调用。
 
  /* 参数输出 */
          web_submit_data("StatusReporter",
             "Name=title", "Value={RunTime}", ENDITEM,
             "Name=content", "Value={GN}", ENDITEM,
             LAST);
 
  /* 变量输出 */
            lr_output_message("当前IP地址: %s ",ip);
 
  lr_think_time(2); //停顿两秒便于观察。
 
  return 0;
        }
        /*********************END***************************/
 
  这段代码,虽然很简单,但已含概了变量与参数的转化与输出。

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
就目前的了解。Loadrunner的脚本语言其实和C没什么区别。他内部的好多机制都是C实现的。
 
不过是一种“类C”
 
所以我从几个方面分析
 
1:定义常量变量和C一样
 
2:LR函数的参数使用与C有点不一样, 在LR中,C的变量和LR的参数是不一样的。
任何C的变量都不能被LR的函数直接调用。
应该用lr_eval_string来取值。
 
3:什么循环语句,选择语句都和C一样
 
 
4:一些函数的定义和C不一样。虽然名字一样,参数有不同
 
5: 输入输出也有些不同。
 
 
所以重点要突破的地方就是理清参数和变量直接的关系。和多熟悉一LR些函数,其他就是C语言的知识了。
 
 
lr它有自己管理的变量,也叫参数,这种参数只能通过reg或者lr_save_方式定义,或者通过文件定义.
 
 
1.参数的赋值和取值
 
lr_save_string("hello world","param");
lr_eval_string("{param}");
 
 
2.变量到参数
int x;
x=10;
lr_save_string(x,"param");
lr_eval_string("{param}");
 
 
3.变量读参数
char x[100];
x="{param}";
lr_save_string("hello world","param");
lr_eval_string(x);
 
LoadRunner没有提供对参数的算术运算的函数。所以LR的参数必须:
 
1) 转换成C的整数
 
2) 使用C的函数来运算最后返回一个C的字符串
 
3) 把返回的字符串保存成参数
 
 
view plaincopy to clipboardprint?
// 1. 转换成C的整数:     
      
i = atoi( lr_eval_string("{pNum_in}") );     
      
// 2. 使用C的函数来运算最后返回一个C的字符串:     
      
sprintf( cBuf, "%d", i+1);      
      
// 3.把返回的字符串保存成参数:     
      
lr_save_string( cBuf, "pNum_out");  
// 1. 转换成C的整数: 
 
i = atoi( lr_eval_string("{pNum_in}") ); 
 
// 2. 使用C的函数来运算最后返回一个C的字符串: 
 
sprintf( cBuf, "%d", i+1);  
 
// 3.把返回的字符串保存成参数: 
 
lr_save_string( cBuf, "pNum_out"); 
 
 
 
lr_eval_string()
 
函数的主要作用:返回脚本中的一个参数当前的值,
 
返回值类型:char
 
一般多用在调试脚本时输出参数的值.具体用法如下:
lr_output_message("The parameter1's value is %s",lr_eval_string("{parameter1}")),其中参数parameter1在之前已经定义了的参数
 
lr_log_message(lr_eval_string("{parameter1}"))
 
 
在LR中,C的变量和LR的参数是不一样的。
任何C的变量都不能被LR的函数直接调用。
应该用lr_eval_string来取值。
比如{NewParam}(LR中参数化的变量)直接用这个引用是没有问题的。
但是如果如下:
 
Action()
{
    char a[10];
    strcpy(a,"{NewParam}");
    lr_message(a);
    return 0;
}
 
这就不对了。
lr_message(a);就会报错。
但是写成lr_message(lr_eval_string(a));就可以。
因为这里的值已经取出来了。
 
********** 参数和变量传递 ***********/
Variable( )
 
 
char* ip =lr_get_vuser_ip();//获取当前用户的IP地址,保存在IP变量里。
char* gname =lr_get_host_name();//获取当前用户的机器名,保存在GNAME变量里。
 
if(ip)
/* 参数转变量 */   //RunTime是已定义的参数,下文也可以直接调用
          lr_vuser_status_message("Ip地址: %s ,参数 : %s",ip,lr_eval_string("{RunTime}"));
else
           lr_vuser_status_message("未启动IP欺骗……");
 
/* 变量转参数 */
   lr_save_string(gname, "GN" );//把变量IP存在“GN”参数里,下文可以直接用 {GN} 调用。
 
 
/* 参数输出 */
web_submit_data("StatusReporter",
    "Name=title", "Value={RunTime}",ENDITEM,
   "Name=content", "Value={GN}",ENDITEM,
   LAST);
 
 
/* 变量输出 */
   lr_output_message("当前IP地址: %s ",ip);
 
   lr_think_time(2);//停顿两秒便于观察。
 
   return0;
}
 
最初我想实现用web_reg_save_param()取到的数保存在数组中,并lr_eval_string()来显示数组中的各个元素。代码如下:
web_reg_save_param("test","LB=","RB=","ORD=All",LAST);
web_url();
count = lr_eval_string("{test_count}");
for (i=1;i<=count,i++)
sprintf(str,lr_eval_string("{test_%d}"),i);
但是每次得到的数据总是
str = test_1 test_2.....都不是数组中的元素。
其实这个问题就是没有搞懂lr中内部参数和外部参数的区别
web_reg_save_param()中取到的数组,是属于lr的内部函数,在其内部函数中再使用变量,即(test_%d,i),是不能直接取到元素的值。这个中间必须要通过变量(外部变量)来传递。
上述代码改为:
web_reg_save_param("test","LB=","RB=","ORD=All",LAST);
web_url();
count =atoi( lr_eval_string("{test_count}"));
for (i=1;i<=count,i++)
{
sprinf(tmp,"{test_%d}",i);
sprintf(str,lr_eval_string(tmp));
}
这样就能实现了。
 
 
lr_save_string
 
 
The lr_save_string function assigns the specified null-terminated string to a parameter. This function is useful in correlating queries. To determine the value of the parameter, use the lr_eval_string function.
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

loadrunner中的参数与变量

一、LR中变量的使用 变量在LR中可以直接定义,但是必须要定义在系统函数前(即所有的LR函数之前) 例:int 或char name[20] 二、变量和参数的区别 1、作用域 参数的作用域是...
  • he_jian1
  • he_jian1
  • 2014-12-18 15:43
  • 5083

LoadRunner(二)LR参数文件多列的使用和局部变量超长的问题解决方法

1、局部变量超长的问题 最近在项目上使用LR的时候,发现如果定义的变量为这样的形式:vuser_init() { char Buffer[1024 * 1024 * 3]; ...
  • ryu2003
  • ryu2003
  • 2016-02-24 10:32
  • 1196

LR 脚本在init中参数化的问题

 InIt中是可以做参数化的,但单在脚本中运行和在场景中运行有所不同,以下做详细说明: 例子:     用户登入参数化:            ...
  • Sunnyyou2011
  • Sunnyyou2011
  • 2015-09-09 11:09
  • 1576

LR学习笔记之—参数和变量

一、LR中参数的使用 LR中参数默认使用“{}”来表示,如果想要修改,可以再General Options/Parameterization设置参数的边界字符 经常用到的函数: lr_sav...
  • jnlovewwt1983
  • jnlovewwt1983
  • 2012-11-08 11:58
  • 2182

LR-参数设置

  • 2015-07-09 16:51
  • 260KB
  • 下载

LR javavuser协议脚本的环境变量问题

近日利用LR  写了个javavuser协议脚本,先是在eclipse里调试通过的,移植到LR中回放始终报错。 错误如下: "System.err: at sun.net.util.URLUtil...
  • wan_xie2009
  • wan_xie2009
  • 2012-08-29 15:14
  • 1277

LR 杂记--loadrunner参数化总结

Select next row:Sequential,Rondom,Unique Update value on:Each iteration,Each occurrence,Once 下面分别对这两...
  • a578133380
  • a578133380
  • 2013-11-21 13:55
  • 1240

LR有的JMeter也有之一“参数化”

原文网址:http://www.cnblogs.com/fnng/archive/2011/07/28/2119896.html 酝酿了几天,一直想写点JMeter的东西,算是对学习东西的一...
  • xishuang_gongzi
  • xishuang_gongzi
  • 2013-01-13 21:56
  • 578

LR测试文件/表参数的数据分配和更新方法(十)

核心提示:用LR作测试时,往往要设置参数,参数设置的不同直接影响到测试结果,所以是测试中至关重要的一环   用LR作测试时,往往要设置参数,参数设置的不同直接影响到测试结果,所以是测试中至关...
  • zhangchaomao1987528
  • zhangchaomao1987528
  • 2013-03-26 00:07
  • 473

LR 连接数据库设置参数

TXT文本,EXCEL表格以及数据库中的表都可以作为参数的数据集载体,LR都是支持的。 特别提醒: 1.在形成数据池之后,数据库中的数据变化不会影响数据池中的数据。 2.数据文件一定要以一个...
  • KerryRuan
  • KerryRuan
  • 2014-04-22 14:28
  • 979
    个人资料
    • 访问:6271次
    • 积分:144
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:33篇
    • 译文:0篇
    • 评论:0条