lr函数之lr_eval_string()函数的使用学习
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);
---------------------
最新文章
- java中文乱码解决之道(六)-----javaWeb中的编码解码
- CSS3知识点整理&;&;一些demo
- Android 图片上传
- vmware安装ubuntu卡在install vm-tools
- OleContainer控件介绍
- phalcon: tasks MainTask.php命令行工具
- DOM文档对象总结
- Java日志记录的5条规则
- a标签无disabled属性
- 2014最热门、最具争议的10个Java话题
- Python sort后赋值 操作陷阱
- 从极大似然函数到EM算法
- Chapter 5 Blood Type——27
- 【译】参考手册-React组件
- TensorFlow学习笔记:保存和读取模型
- favicon.ico 网站小图标标识
- iOS开发--UILabel根据内容自动调整高度
- bzoj4471 bzoj4490 随机数生成器Ⅱ
- 2018.10.17 NOIP模拟 发电机(概率dp)
- linux(模糊批量删除文件)删除指定文件夹中某个文件除外的其他文件