本节书摘来自异步社区《LoadRunner 12七天速成宝典》一书中的第2章,第2.5节参数和变量,作者陈霁,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.5 参数和变量云云:接着来说一下关于编程实现的方式,编程实现有两条路径:一个是走纯变量,另一个是走变量转参数。
恋恋:变量和参数有什么区别来着?
云云:前面不是说过么,参数是特殊的变量,参数是LR(LoadRunner的缩写)级别的,变量是C级别的。变量是属于语言体系的,所以它需要符合C语言或者当前脚本语言体系的基本语法规范,比如:
Action() { int c; char x[100]; char *y; c=10; strcpy(x,"abc"); y="aya i love you"; lr_output_message("%d",c); lr_output_message(x); lr_output_message(y); return 0; }这里我用了3种变量,整型、字符串数组、指针型字符串,并且对其进行了赋值以及输出。
恋恋:C语言我懂,当年大学我C语言学的可好了,输出是system.out.print,对吧。
云云:那是Java,C语言是sprintf。
恋恋:快讲参数!
云云:在LR中还有一种东西就是参数,其实前面你一直在用,但是用了所谓的参数化的概念,所谓的参数就是你看到可以用“{}”访问的内容,我们通过一个代码可以将参数的值转化为变量,也可以通过另外一个参数把变量转化为参数。
恋恋:貌似好像,也许,确实讲过。
云云:看懂下面的代码,我们就可以准备出门了。
Action() { char *y; y="aya i love you"; lr_save_string(y,"temp"); lr_output_message(lr_eval_string("{temp}")); return 0; }恋恋:让我运行一下看看。
(几分钟过去后)
恋恋:哈哈,以我的聪明才智还能搞不定你这点小问题,这里temp是一个参数,你写了个函数lr_save_string把变量y的值保存到了temp中,然后我记得lr_output_message后面要带字符串,所以你用lr_eval_string把temp参数的值取了出来转成了字符串,所以最后就输出了,对吧。
云云:赞许地点了点头。那么要做大量数据参数化怎么办呢?
恋恋:我来写个代码看看。
Action() { int i; for(i=0;i<10;i++) { lr_save_string(i,"temp"); lr_output_message(lr_eval_string("{temp}")); } return 0; }奇怪为啥运行不起来呢?
云云:C语言的语法比较严谨,在这里lrsave_string需要把一个字符串保存到一个参数中去,但是_i是一个整型。
恋恋:那该怎么办呢?
云云:其实解决办法很简单,按一下F1键试试!
恋恋:我想偷懒,算了我还是自己试试。
恋恋:我就知道很简单,帮助里面有个lr_save_int函数,这个东西就能把整型放进参数,看代码。
Action() { int i; for(i=0;i<10;i++) { lr_save_int(i,"temp"); lr_output_message(lr_eval_string("{temp}")); } return 0; }云云:嗯,但是你这个是数字,如果要用字符串呢?
恋恋:是不是还要别的函数啊?
云云:是的,算了这个不考你了,你看看我写的代码就懂了。
Action() { int i; char *y; char x[100]; y="aya i love you"; for(i=0;i<10;i++) { sprintf(x, "cloud_%s%d", y, i); lr_save_string(x,"temp"); lr_output_message(lr_eval_string("{temp}")); } return 0; }看懂我们就出门吃饭!
恋恋:sprintf这个函数好厉害,懂了,快出发吧!
**小结能够区分变量和参数,熟悉参数变量的转换,对参数的跟踪有一定的了解。**
相关资源:LOADRUNNER 12七天速成宝典