LR脚本用户自定义C语言函数

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;

}
时间: 2024-08-07 13:38:12

LR脚本用户自定义C语言函数的相关文章

彻底抛弃脚本录制,LR脚本之使用web_custom_request函数自定义

原文  http://www.cnblogs.com/Bonnie83/p/3525200.html 初学性能测试时候,第一步必学脚本录制,但一路下来各种录制失败.回放脚本失败的问题层出不穷,究其原因一是LR本身存在对测试环境的兼容性问 题导致录制失败,更深层次的原因是录制者不清楚LR录制脚本的原理,或者不清楚客户端与服务器端之间的请求和应答内容及通信方式,导致一旦出现脚本执行失 败便无从下手.最近在做项目的一个接口测试时候,因请求是合作第3方发起的且不容易让第3方提供他们的平台给我们做测试,所

LR脚本示例之常用函数

1.变量和参数的设置 //将IP地址和端口放入到参数中lr_save_string("127.0.0.1:1080","ip"); //退出脚本建议使用lr_exitlr_exit(LR_EXIT_VUSER,LR_PASS); //计算变量数组的元素个数int arr_m1[100]; int len1=0len1=sizeof(arr_m1)/sizeof(int); //返回字符串的长度char *tempStr="test is a house&q

LoadRunner 7 脚本开发和常用函数

开发性能测试脚本原则.简单 正确 高效 在lr中,脚本运行是解释执行的.所以在运行时,需要先编译. 局部变量和全局变量 1.在init.action.end中定义的变量就是局部变量 2.在globals.h中定义的变量是全局变量 3.什么时候定义全局变量 ? 整个过程中固定不变的,例如URL地址.KEY.其他 int a=100;//这个a是文件级别的.除了globals.h 都可访问 Action() { int a =10; int b =6; //在lr要使用变量,必须放在最上面. pri

(转)如何编写有多个返回值的C语言函数

1引言    笔者从事C语言教学多年,在教学中学生们常常会问到如何编写具有多个返回值的C语言函数.编写有多个返回值的函数是所有C语言教材里均没有提到的知识点,但在实际教学与应用的过程中我们都有可能会遇到这样的问题.有学生也尝试了不少方法:如把多个需要返回的值作相应的处理后变成一个可以用return语句返回的数据,再在主调函数中拆开返回的数据使之变成几个值:或者把需要返回多个值的一个函数分开几个函数去实现多个值的返回.这些方法虽然最终都能实现返回要求的多个值,但从程序算法的合理性与最优化方面去考虑

借助动态代码生成技术在基于Webkit引擎的HTML5网页JS内调用易语言函数

作者:庄晓立(Liigo) 日期:2015年3月3日夜 原创链接:http://blog.csdn.net/liigo/article/details/44045177 版权所有,转载请注明出处:http://blog.csdn.net/liigo 前两天我协助解决了一个技术问题,在此稍作记录和总结. 具体来说,就是在使用基于Webkit引擎的封装组件wke的过程中,需要把一个易语言函数注册给JavaScript引擎,让它可以在网页里被调用(就像在网页里调用普通JavaScript函数一样).如

有关WinSocekt 协议录制LR脚本

看到大家都说WinSocekt 协议属于底层协议,不太常用,可是因为工作原因,我接触到的项目都是WinSocekt 协议协议,还有一些直接用Socket协议编写的程序,因此在Socekt协议这里花费了大量的时间. 先说说WinSocekt 协议 选择此协议录制的脚本除vuser_ini.Action. vuser_end三大部分之外还有一个存放所收发数据包的data.ws文件,在data.ws文件中按照如下格式存放数据: send buf0 50 //send 表示准备发生的数据包  recv

在LoadRunner中转换字符串大小写的C语言函数

在LoadRunner中转换字符串大小写的C语言函数 . loadrunner语言ccharacterstringaction 封装ConvertToXXX函数: //ConvertToUpper function int ConvertToUpper(char * sInput, char * sNew) { sInput = (char *)strupr(sInput); lr_save_string(sInput,sNew); } //ConvertToLower function int

LR脚本录制方式说明

1.LR脚本录制方式说明1)HTML-based script基于HTML的脚本从内存中读取并下载资源,较少的关联处理,可以加入图片检查,回放时需要解析返回的信息a-基于用户行为的方式 web_link web_image web_submit_form 这种录制的请求,需要前面页面信息的支持每个函数对应用户的一个动作,基于用户录制,浅显易懂,有对应的检查 b-基于URL的方式 web_url web_submit_data所有请求同一由web_url处理,表单的提交由 web_submit_d

C#委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type