• 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;
    }

     运行结果:

     

     

  • 相关阅读:
    什么是反向代理,反向代理有什么好处?
    动态的favicons
    管理emacs dotemacs文件
    自己的部分小软件合计 2000 2013(很久没有更新了)
    经典CSS 横向导航菜单【下载】
    Web 调试,兼容浏览器的在线调试(系列)
    sql server 执行大脚本时报警告没有足够的内存继续执行程序
    c#对接顺丰图片文件
    Sql Server行转列 动态拼接sql
    centos6.2更新yum源
  • 原文地址:https://www.cnblogs.com/langhuagungun/p/8351853.html
Copyright © 2020-2023  润新知