LR脚本示例之常用函数

1、变量和参数的设置

//将IP地址和端口放入到参数中
lr_save_string("127.0.0.1:1080","ip");

//退出脚本建议使用lr_exit
lr_exit(LR_EXIT_VUSER,LR_PASS);

//计算变量数组的元素个数
int arr_m1[100]; int len1=0
len1=sizeof(arr_m1)/sizeof(int);

//返回字符串的长度
char *tempStr="test is a house";
int len=0;
len=strlen(tempStr);

//在globals.h文件定义 double think_time=3;//后面可使用该变量来设置思考时间
lr_think_time(think_time);

//生成m-n之间的随机数 rand()%(n-1)+m
lr_think_time(rand()%(n-1)+m);

//添加请求的头的编码信息
web_add_header("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");//提交键值对时的编码信息
web_add_header("Content-Type","application/json; charset=utf-8");//提交json时的编码信息

//提交表单时的编码信息 设置EncType
"EncType=multipart/form-data"

//对返回结果进行编码转换
//lr_save_string("通过该函数获取","response");
//LR_ENC_SYSTEM_LOCALE NULL
//LR_ENC_UTF8 utf-8
//LR_ENC_UNICODE ucs-2

//lr_convert_string_encoding(lr_eval_string("{response}"), "UTF-8","GB2312","unicodeName");//从UTF-8编码 转换到 GB2312 编码存入参数 unicodeName

请求的参数中、或Body中包含特殊字符时,需要进行URL编码
char *name="输入了正确的数据";
lr_convert_string_encoding(name,LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8 , "unicodeName");//从系统编码 转换到 UTF-8 编码存入参数 unicodeName
lr_save_string (lr_eval_string("{unicodeName}"),"urlName" );
web_convert_param("urlName", "SourceEncoding=PLAIN", "TargetEncoding=URL",LAST );

//在当前系统日期上随机增加n-m天
vRandDay= rand() % m + n;
lr_save_datetime("%d/%m/%Y",DATE_NOW+(vRandDay)*(ONE_DAY),"pRandDay");

//返回参数数组中随机的值
char *pName=NULL;

//通过该函数获取 name为参数数组 为全局变量
web_reg_save_param("name",...,"ORD=ALL",LAST)
pName=lr_paramarr_random("name");

//返回参数数组中指定位置的值
char *pName2=NULL;
pName2=lr_paramarr_idx("name",i);

//获取参数数组的数据个数
int pLen=0;
pLen=lr_paramarr_len("name");

或者

pLen=atoi(lr_eval_string("{name_count}"));

//比较2个字符串是否相等 0 相等 否则不相等
char *name1="test2"
if(strcmp(name,name1)==0)

//将字符串赋值给变量
char tempName[50];
char *name="test";
strcpy(tempName,name);

//拼接字符串
strcat(tempName,"test right");

//获取参数的值
lr_save_string(tempName,"finalName");
lr_eval_string("{finalName}")

//将整数字符串转换成整形并赋值给变量
int money=0;
money=atoi(lr_eval_string("{tempMoney}"));

//从 tempStr 中截取指定长度的字符,从左开始在 tempStr 字符串的 index 位置处截取,
// 截取 len-index 位字符,并存放到参数 value 中
char *str="access_token=4f7487f9-077c-4246-94f5-8ed59e87a0fc";
char *ch="&";
char *tempStr=NULL;
lr_save_var(tempStr+index+1,(len-index),0,"value");//从 index+1位置开始截取 ,截取长度为 len-index,0 表示从左边开始截取 ,截取后的数据存放到 value参数

//分割字符
char *str="access_token=4f7487f9-077c-4246-94f5-8ed59e87a0fc";
char *ch="&";
char *tempStr=NULL;
tempStr = (char *)strtok(str,ch);
while(tempStr!=NULL)
{
len=strlen(tempStr);
for(i=0;i<len;i++)
{
if(tempStr[i]==‘=‘)
{
index=i;
break;
}
}

//从 tempStr 中截取指定长度的字符,从左开始在 tempStr 字符串的 index 位置处截取,
// 截取 index 位字符,并存放到参数 name 中
lr_save_var(tempStr+0,index,0,"name");//从 0位置开始截取 ,截取长度为 index,0 表示从左边开始截取 ,截取后的数据存放到 value参数

tempStr = (char *)strtok( NULL, ch);
}

//设置html支持的字符长度为1024
web_set_max_html_param_len("1024");

//放在查找请求的前面,对请求响应的结果进行检查 检查的内容,需在返回的成功页面保持唯一
web_reg_find("Search=All",//匹配范围 Headers Body Noresource:不包括头和资源 ALL
"SaveCount=successCount",//将搜索到内容的次数存到该参数
"TextPfx=",//左边界
"TextSfx=",//右边界
"Text/IC=Using the menu to the left",//需检查的文本 IC忽略大小写 当搜索的内容不固定时,可以使用左右边界来确定
"Fail=NotFound",//找不到时,怎么处理
"ID=",//标记调用这个函数的信息
LAST);

//获取请求返回页面中的数据
web_reg_save_param("name",
"LB/IC=name=\"",//左边界 左右边界为空,匹配整个返回的内容 边界中包含双引号 则需加反斜杠 加ic表示忽略大小写匹配
"RB/IC=\" value=\"on\" />",//右边界 ,边界中包含双引号 则需加反斜杠 加ic表示忽略大小写匹配
//"Convert=HTML_TO_URL",//数据转换 HTML_TO_URL 将html编码数据转换为url数据 HTML_TO_TEXT 将html编码数据转换为文本数据
"ORD=ALL",//匹配所有可以匹配到的内容
//"SaveLen=",//搜索到内容后,截取得指定长度的内容
//"SaveOffset=",//搜索到内容后,在偏移指定长度位置后,再截取得指定长度的内容
"Search=Body",//匹配范围 Headers Body Noresource:不包括头和资源 ALL
"NOTFOUND=warning",//匹配不到如何处理 error warning
LAST );

//开启事物
lr_start_transaction("登录");

//判断提交登录是否成功
if(atoi(lr_eval_string("{successCount}")) > 0)
{
//结束登录的post请求
lr_output_message("访问登录结束,登录成功");
lr_end_transaction("登录", LR_PASS);
}
else
{
//结束登录的post请求
lr_output_message("访问登录结束,登录失败");
lr_end_transaction("登录", LR_FAIL);
}

web_url("请求描述",
"URL=http://{ip}/请求的参数",
"Resource=0",
"RecContentType=text/html",
"Referer=http://{ip}/请求的参数",
"Mode=HTML",
LAST);

web_submit_data("请求描述",
"Action=http://{ip}/请求的参数",
"Method=POST",
"RecContentType=text/html",
"Referer=http://{ip}/请求的参数",
"Mode=HTML",
ITEMDATA,
"Name=username", "Value=test01", ENDITEM,
"Name=password", "Value=123456", ENDITEM
LAST);

//web_custom_request请求,通用型的请求函数
//web_custom_request 中 Mode=HTTP,
//get请求 Method=GET Mode=HTTP
//post请求 Method=POST Mode=HTTP Body=请求的参数
//响应的Content-Type RecContentType=text/html 请求的content-Type EncType=application/x-www-form-urlencoded; charset=UTF-8

web_custom_request("请求描述",
"Method=POST",//提交方式
"URL=http://{ip}/请求的参数",
"Mode=HTTP",
"EncType=application/x-www-form-urlencoded",//请求的Content-Type 覆盖web_add_[auto_]header设置的Content-Type类型
"RecContentType=text/html;",//响应的Content-Type
tempQueryString,//请求的参数,拼接出来后赋值给变量
LAST );

//使用参数 变量发送请求的列子
char *url = "ip:port";
char arr_url[1024];

//将url变量的值复制给p_url1参数
lr_save_string(url,"p_url");

//将p_url1参数的值复制给arr_url变量
strcpy(arr_url,"URL=http://");
strcat(arr_url,lr_eval_string("{p_url}"));
strcat(arr_url,"查询的参数");

lr_output_message("通过获取参数的值的方式发送请求");
web_url("描述1",
"URL=http://{p_url}/查询的参数",
LAST);

lr_output_message("通过获取变量的值的方式发送请求");
web_url("描述2",
arr_url,
LAST);

//求数组中的最小值
int arr[]={-12,-43,45,-14,-78,-16,0,3,-6,-30,-40};
int len=sizeof(arr)/sizeof(int);

int getMin(int *arr,int len)
{
int i=0;
int min=arr[0];

for(i=0;i<len;i++){
if(min>arr[i]){
min=arr[i];
}
}
return min;
}

//求数组中的最大值
int arr[]={-12,-43,45,-14,-78,-16,0,3,-6,-30,-40};
int len=sizeof(arr)/sizeof(int);

int getMax(int *arr,int len)
{
int *p=arr;
int max=*p;

for(;p<(arr+len);p++)
{
if(*p>=max1)
{
max=*p;
}
}
return max;

};

#Action控制迭代次数
Action()
{
lr_output_message("当前跌代次数%d",i);

i++;

if(i>=4)
{
lr_exit(LR_EXIT_VUSER,LR_PASS);
}
return 0;
}

原文地址:https://www.cnblogs.com/NiceTime/p/10025721.html

时间: 2024-10-16 14:59:46

LR脚本示例之常用函数的相关文章

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; } 例子说明: 我写了一个

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

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

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

LR脚本示例

Get请求: web_reg_save_param("ResponseBody", "LB=", "RB=", "Search=Body", LAST); lr_start_transaction("Ts_GetAttentionList"); web_reg_find("Search=Body",//这里说明在Body的范围内查找 "SaveCount=ret_Count&q

LR脚本示例之参数_变量介绍

Action(){ char *url = "127.0.0.1:1080"; char arr_url[1024]; //将url变量的值复制给p_url1参数 lr_save_string(url,"p_url"); //将p_url1参数的值复制给arr_url变量 strcpy(arr_url,"URL=http://"); strcat(arr_url,lr_eval_string("{p_url}")); strc

LR脚本示例之URL请求(post、get)

Action(){ //application/x-www-form-urlencoded //application/json //web_add_auto_header("Content-Type","application/x-www-form-urlencoded");设置请求头信息 //1.停顿2秒 lr_think_time(2); //2.设置检查点 web_reg_find("SaveCount=count", "Tex

SecureCRT脚本编写常用函数(一)

SecureCRT脚本编写常用函数(一) 测试 python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是SecureCRT工具:SecureCRT支持VB.JavaScript.Python等多种脚本语言,为了实现脚本在CRT中更加丰富稳定地执行,掌握CRT的常用函数是非常有用的.接下来的时间我将对SecureCRT脚本编写的常用函数展开学习应用. 索引 本阶段重点对SecureCRT中Screen相关函数进行学习,针对Pytho

【COCOS CREATOR 系列教程之二】脚本开发篇&事件监听、常用函数等示例整合

[Cocos Creator ](千人群):  432818031 上一篇,介绍了Himi在使用过cc所有组件后的一篇总结,没有具体介绍每个组件的原因在于官方文档很齐全,而且也有视频的介绍. 所以希望童鞋们可以把我这两篇博文当成对组件.脚本两部分开发的整理与总结. 后续的文章,Himi应该主要更新一些官方还未补充或者还没有的教程.避免无用功. 下面直接放出代码,因为不是很难理解.所以不再一一赘述,都是常用的函数.事件监听.动作回调.定时器等开发过程中必接触的. 大致内容如下: cc 属性介绍 获

性能测试基础-开门篇3(LR常用函数介绍)

LR常用的函数,协议不一样函数会不一样,这里简单的介绍下HTTP\WEBSERVICE\SOCKET协议常用函数: HTTP: web_set_max_html_param_len("1024");//设置1行数据最大长度,经常会使用到 web_reg_save_param("SupplierId", "LB=SupplierId>", "RB=</b:SupplierId", "SEARCH=BODY&