Loadrunder脚本篇——关联数组(参数数组)

Posted 残~枫~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Loadrunder脚本篇——关联数组(参数数组)相关的知识,希望对你有一定的参考价值。

导言

   前面说过可以用关联取出服务器相关的一些动态变化的信息,前面也提过web_reg_save_param中可以设置ord=all,代表从服务器中取出的是一个数组,它试用的场景是当我访问一个发帖网站,有很多帖子,我们通过关联数组的方式获得本页所有帖子的id的一个数组,然后通过一个lr_paramarr_random函数随机取出这个数组的一个值,就模拟用户随机点击一个帖子,然后再把这个随机获取的值传到点击某一个帖子跳转页面的那个url里面,这样就完成了模拟用户随机点击帖子然后跳转到具体的帖子详情页,本篇将详细讲解通过脚本实现这个问题!

1.从服务器获取的关联数组

只要在关联函数中加入“ord=all”代表着取满足条件下的所有数据组成的数组。举例如下:

Action()
{
web_reg_save_param("id",
"LB=\\"_id\\":\\"",
"RB=\\"",
"Ord=ALL",
LAST);

web_custom_request("web_custom_request",
"URL=http://192.168.1.126:3000/apixxxxxxx",
"Method=GET",
"TargetFrame=",
"Resource=0",
"Referer=",
"Body=",
LAST);

return 0;
}

运行结果:

从上面的结果看到,我们命名的为id不是一个数组了,是一个数组,他满足以下两个条件:

1.参数必须都是以相同的名字开头,后面接下划线加数字的方式顺序赋值。

2.参数数组必须有一个“参数名_count”的参数来记录数组的长度

相关函数:

lr_paramarr_idx()     //获取参数数组中指定编号的参数的值

lr_paramarr_len()     //获取参数数组的长度

lr_paramarr_random()  //从参数列表中随机获取一个参数

 2.将内容保存为参数数组

例子:要创建一个访问网站的参数数组,可以编写以下代码

 

loadrunner <wbr>脚本开发-参数化之将内容保存为参数、参数数组及参数值获取

说明:通过脚本创建了一个名为website的参数数组,并获取编号为2的参数的值,

运行结果:

loadrunner <wbr>脚本开发-参数化之将内容保存为参数、参数数组及参数值获取
 

此处:web_site = lr_paramarr_idx("website", 2),等同:lr_eval_string(“{website_2}”);

 

获取参数数组长度

例子:

Action2()

{  

    int array_size = 0;

    char *arr_size_str = NULL;

 

    lr_save_string("www.google.com", "website_1");

    lr_save_string("www.google.com", "website_2");

    lr_save_string("www.google.com", "website_3");

    lr_save_string("www.google.com", "website_4");

    lr_save_string("4", "website_count");

 

    array_size = lr_paramarr_len("website");

 

    //输出整数

    //1.把结果array_size保存为参数

    lr_save_int(array_size, "arr_size");

    //2.获取参数的字符串表示

    arr_size_str = lr_eval_string("{arr_size}");

    //输出结果

    lr_output_message(arr_size_str);

 

    return 0;

}

运行结果:

loadrunner <wbr>脚本开发-参数化之将内容保存为参数、参数数组及参数值获取
 

从参数列表中随机获取一个参数

例子:

Action2()

{  

    char *web_site = NULL;

 

    lr_save_string("www.google.com", "website_1");

    lr_save_string("www.google.com", "website_2");

    lr_save_string("www.google.com", "website_3");

    lr_save_string("www.google.com", "website_4");

    lr_save_string("4", "website_count");

 

    web_site = lr_paramarr_random("website");

    return 0;

}

运行结果:

loadrunner <wbr>脚本开发-参数化之将内容保存为参数、参数数组及参数值获取

 

 

例子:按顺序输出每个参数

Action2()

{  

    int i = 0;

 

    lr_save_string("www.google.com", "website_1");

    lr_save_string("www.google.com", "website_2");

    lr_save_string("www.google.com", "website_3");

    lr_save_string("www.google.com", "website_4");

    lr_save_string("4", "website_count");

 

    for (i=0; i<4;i++)

    {

        lr_output_message(lr_paramarr_idx("website", i));

    }

    return 0;

}

输出结果

loadrunner <wbr>脚本开发-参数化之将内容保存为参数、参数数组及参数值获取

 

用指针变量存放参数

Action2()

{  

 

    char *pt = NULL;

 

    lr_save_string("hello world", "param");

    pt = "{param}";

    lr_output_message(pt);

    lr_output_message(lr_eval_string(pt));

 

    return 0;

}

 

运行结果:

loadrunner <wbr>脚本开发-参数化之将内容保存为参数、参数数组及参数值获取

 3.实战中的运用

举例:

Action()
{
web_reg_save_param("id",
"LB=\\"_id\\":\\"",
"RB=\\"",
"Ord=ALL",
LAST);

web_custom_request("web_custom_request",
"URL=http://192.168.1.126:3000/apixxxxxxx",
"Method=GET",
"TargetFrame=",
"Resource=0",
"Referer=",
"Body=",
LAST);

lr_save_string(lr_paramarr_random("id"),"RamId");

web_custom_request("web_custom_request",
"URL=http://1xxxxxxx/detail?_id={RamId} ",
"Method=GET",
"TargetFrame=",
"Resource=0",
"Referer=",
"Body=",
LAST);

 

return 0;
}

 运行结果:

 

 

 

以上是关于Loadrunder脚本篇——关联数组(参数数组)的主要内容,如果未能解决你的问题,请参考以下文章

Loadrunder脚本篇——web_custom_request函数介绍

Loadrunder脚本篇——web_custom_request做接口测试

Loadrunder脚本篇——Run-time Settings之Preferences

loadrunder脚本篇——执行操作系统命令

Loadrunder脚本篇——Run-time Settings之Miscellaneous

loadrunder之脚本篇——int类型和字符串的相互转换