LR脚本实战:用户自定义C语言函数 Loadrunner可以使用标准C语言的函数,因此我们可以在脚本中编写自己的函数用于调用,把脚本结构化,更好的进行重用。 先看一个例子: Action() { int i,j; j = 1; for (i=0;i<10;i++) { lr_message("i+j=%d",sum(i,j)); j++; } return 0; } int sum(int a,int b)//简单的求和函数 { return a+b; } 例子说明: 我写了一个很简单的函数sum,求2个整数的和; 1、函数实现可以放在lr脚本的任意位置(函数的作用域); 例如action、vuser_init、vuser_end这些脚本的主函数外,则不需要考虑函数的作用域;在任意地方都可以调用。 如果放到Action()、vuser_init()、vuser_end()这些函数体内,则只有本函数体内才可以调用。 例如: Action() { int sum(int a,int b)//简单的求和函数 { return a+b; } int i,j; j = 1; for (i=0;i<10;i++) { lr_message("i+j=%d",sum(i,j)); j++; } return 0; } 上例则只有action内部可以调用sum函数。 2、如果想跳出函数,使用return 0或break即可 再看一个稍微复杂点的例子: Action() { int aa[20]; CheckChar("AaBbCc001 1 1",aa); lr_message("字符串长度为:%d",aa[0]); lr_message ("统计-大写字符:%d",aa[1]); lr_message ("统计-小写字符:%d",aa[2]); lr_message ("统计-数字字符:%d",aa[3]); lr_message ("统计-空格字符:%d",aa[4]); return 0; } void CheckChar(char ch[],int a[]) //统计函数,分别统计字符串长度;大写、小写、数字和空格的个数,返回整形保存在数组里 { int i; for(i=0;i<=3;i++) a[i]=0; a[0] = strlen(ch);//获取字符串长度 for(i=0;i<a[0];i++) { if(ch[i]>='A' && ch[i]<='Z') //如果是大写字符 a[1]++; else if(ch[i]>='a' && ch[i]<='z') //如果是小写字符 a[2]++; else if(ch[i]>='0' && ch[i]<='9') //如果是数字 a[3]++; else if(ch[i]==' ') //如果是空格 a[4]++; } } 写了一个检查字符串成分的函数,只能检查出字符串长度,大写、小写、数字和空格的个数。 由此可见,lr中使用C函数还是比较灵活。 再附上一个指针相关的函数调用: Action() { int *i, *j; // *i = 100; int a=50, b=50; i = &a; j = &b; lr_message("i+j=%d",sum(i,j)); return 0; } int sum(int *a,int *b)//简单的求和函数 { return *a + *b; }