lr_eval_string()
函数的主要作用:返回脚本中的一个参数当前的值(从参数中取得对应的值,并且转换为一个字符串)。
格式:lr_eval_string("{参数名}");
例如:lr_eval_string("{parm}");
返回值类型:char
由于返回值类型是char类型,所以可以直接使用lr_output_message(lr_eval_string("{parm}"))函数输出到日志中。
如:lr_output_message(lr_eval_string("{parm}"));
一般多用在调试脚本时输出参数的值.具体用法如下:
lr_output_message("The parameter1's value is %s",lr_eval_string("{parameter1}")),其中参数parameter1在之前已经定义了的参数
lr_log_message(lr_eval_string("{parameter1}"))
改变参数取值的关键在于Select next row和Update value on这两个选项
select next row包含以下选项:
Sequential 顺序取值
Random 随机取值
Unique 唯一取值
Same line as 取某个参数的同行
Update value on 包含以下选项:
Each iteration 每次迭代更新
Each occurrence 每次取值更新
Once 只更新一次
练习
编写一个脚本,并以此脚本为练习的实例:
Action()
{
lr_log_message(lr_eval_string("{parameters}"));
return 0;
}
parameters的参数值见图
情况一:Sequential 顺序取值+Each iteration 每次迭代更新
迭代次数为 1
结果为:甲
迭代次数为 2
结果为:甲 乙
迭代次数为 3
结果为:甲 乙 丙
迭代次数为6
结果为:甲 乙 丙 丁 戊 甲
扩展:
迭代次数为 1
Action()
{
int i;
for(i=0;i<3;i++)
{
lr_output_message(lr_eval_string("{parameters}"));
}
lr_output_message(lr_eval_string("{parameters}"));
return 0;
}
这段执行出的结果为:甲甲甲甲
以上脚本将迭代次数修改为2:
实行结果:甲甲甲甲 乙乙乙乙
得出的结论:当使用Update value on + Each iteration时,只有出现了Staring iteration 才会触发记录变化,否则取值内容均不会发生变化。
情况二:Sequential 顺序取值+Each occurrence 每次取值更新
迭代次数为 1
Action()
{
lr_log_message(lr_eval_string("{parameters}"));
return 0;
}
结果为:甲
迭代次数为 2
结果为:甲 乙
迭代次数为 3
结果为:甲 乙 丙
迭代次数为6
结果为:甲 乙 丙 丁 戊 甲
扩展:
迭代次数为 1
Action()
{
int i;
for(i=0;i<3;i++)
{
lr_output_message(lr_eval_string("{parameters}"));
}
lr_output_message(lr_eval_string("{parameters}"));
return 0;
}
结果为:甲 乙 丙 丁
迭代次数为 2
结果为:甲 乙 丙 丁 戊 甲 乙 丙
得出的结论:Each occurrence 每次取值更新的效果就是,每次取值都会发生变化
情况三:Sequential 顺序取值+Once 只更新一次
迭代次数:2
Action()
{
lr_log_message(lr_eval_string("{parameters}"));
return 0;
}
结果:甲 甲
迭代次数:2
Action()
{
int i;
for(i=0;i<3;i++)
{
lr_output_message(lr_eval_string("{parameters}"));
}
lr_output_message(lr_eval_string("{parameters}"));
return 0;
}
结果:甲 甲 甲 甲 甲 甲 甲 甲
得出结论:无论怎么设置迭代或者for循环,取到的{parameters}的值都是“甲”,因为第一次取到的值是“甲”,以后在也不会更新,所以值不变。
顺序取值下的各种情况
顺序取值下的各种情况:
Random取值
顺序取值的各种方法搞明白后,Random取值(随机取值)就比较简单了,随机取值可以实现在参数列表中随机选择一条记录,将parameters这个参数的Select next row取值方法从sequential改为Random
Select next row下的Random选项是,参数化的取值情况如下表:
选择Select next row 下的Unique选项是,参数化取值情况如下表:
Action()
{
lr_log_message(lr_eval_string("{parameters}"));
return 0;
}
迭代一次:
1、unique+iteration:
迭代一次结果:甲
迭代7次结果:甲 乙 丙 丁 戊 + 两次"When Out Of Values" policy.
2、unique+Each occurrence:
3、unique+once
Action()
{
lr_log_message(lr_eval_string("{parameters}"));
return 0;
}
迭代一次:
执行结果:甲
迭代7次:
执行结果:甲甲甲甲甲甲甲
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);
---------------------