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;
}
LR脚本示例之常用函数的更多相关文章
- LR脚本用户自定义C语言函数
LR脚本实战:用户自定义C语言函数 Loadrunner可以使用标准C语言的函数,因此我们可以在脚本中编写自己的函数用于调用,把脚本结构化,更好的进行重用. 先看一个例子: Action() { in ...
- 【笔记】LR录制方式和常用函数
本文为本人复习LR时,笔记整理.以备后续查阅. 注意:录制脚本时,选择不同的协议下录制时设置选项也是不相同的,我们这里介绍的是基于协议web(http/html)录制选项设置. 对于web(http/ ...
- LoadRunner 脚本开发和常用函数
开发性能测试脚本原则.简单 正确 高效 在lr中,脚本运行是解释执行的.所以在运行时,需要先编译. 局部变量和全局变量 1.在init.action.end中定义的变量就是局部变量 2.在global ...
- 彻底抛弃脚本录制,LR脚本之使用web_custom_request函数自定义
原文 http://www.cnblogs.com/Bonnie83/p/3525200.html 初学性能测试时候,第一步必学脚本录制,但一路下来各种录制失败.回放脚本失败的问题层出不穷,究其原因 ...
- 彻底抛弃脚本录制,LR脚本之使用web_custom_request函数自定义http请求
初学性能测试时候,第一步必学脚本录制,但一路下来各种录制失败.回放脚本失败的问题层出不穷,究其原因一是LR本身存在对测试环境的兼容性问题导致录制失败,更深层次的原因是录制者不清楚LR录制脚本的原理,或 ...
- LR脚本示例之参数_变量介绍
Action(){ char *url = "127.0.0.1:1080"; char arr_url[1024]; //将url变量的值复制给p_url1参数 lr_save_ ...
- LR脚本示例之URL请求(post、get)
Action(){ //application/x-www-form-urlencoded //application/json //web_add_auto_header("Content ...
- LR常用函数以及调用自定义函数
2.LR常用函数以及调用自定义函数 2.1.LR常用函数以及对信息的判断 2.1.1. LR内部自定义函数 在LR脚本中定义变量和编写自定义函数,需将变量的声明放在脚本其他内容的上方,否则会提示[il ...
- LR常用函数
web_set_max_html_param_len()--常用函数 设置可检索并保存为参数的任何HTML字符串的最大长度. intweb_set_max_html_param_len(const c ...
随机推荐
- sublime Text3支持vue高亮,sublime Text3格式化Vue
第一:让sublime Text3支持Vue高亮 PS:我的sublime版本是3126,我不清楚其它版本的是不是这样设置,不过可以看看思路自己摸索下 1.下载可以让vue格式高亮的插件vue-syn ...
- 面试题: 数据库 sql优化 sql练习题 有用 学生表,课程表,成绩表,教师表 练习
什么是存储过程?有哪些优缺点? 什么是存储过程?有哪些优缺点? 存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL.T-SQL). 存储过程的优点: 能够将代码封装起来 保存在数据库之 ...
- 《精通Spring4.X企业应用开发实战》读后感第五章(<bean>之间的关系\整合多个配置文件)
- 《Java多线程编程核心技术》读后感(十五)
线程的状态 线程对象在不同的运行时期有不同的状态,状态信息就存在与State枚举类中. 验证New,Runnable,Terminated new:线程实例化后还从未执行start()方法时的状态 r ...
- UVa 11552 Fewest Flops (DP)
题意:给一个字符串,把它分为k块,每一块里面的字母可以任意的排序.最终字符串, 连续的一样的字母算作一个chunk,问总chunks最少是多少? 析:dp[i][j] 表示第 i 个块,第 j 位在末 ...
- koa-router 路由参数与前端路由的结合
koa-router 定制路由时支持通过冒号形式在 url 中指定参数,该参数会挂载到 context 上然后可通过 context.params.paramName 方便地获取. 考察下面的示例: ...
- Weekly Contest 112
945. Minimum Increment to Make Array Unique Given an array of integers A, a move consists of choosin ...
- Tyvj P1520 树的直径
P1520 树的直径 http://www.tyvj.cn/p/1520 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 树的直径,即这棵树中距离最远的两个结 ...
- Programming Ruby 阅读笔记
在Ruby中,通过调用构造函数(constructor)来创建对象 song1=Song.new("Ruby") Ruby对单引号串处理的很少,除了极少的一些例外,键入到字符串字面 ...
- angularJs 自定义指令传值---父级与子级之间的通信
angularJs自定义指令用法我忽略,之前有写过,这里只说一下父子级之间如何传值: 例如: 模块我定义为myApp,index.html定义 <my-html bol-val="bo ...