51Testing软件测试论坛

标题: 关于lr_paramarr_random()的使用 [打印本页]

作者: 喵小妖7117    时间: 2016-10-8 14:08
标题: 关于lr_paramarr_random()的使用
以下是我的脚本:
  Action()
{

    char TestArray[5];
    char *temp;
    temp="12";

    lr_save_string("1","TestArray_1");
    lr_save_string("12","TestArray_2");
    lr_save_string("11","TestArray_3");
    lr_save_string("122","TestArray_4");
    lr_save_string("13","TestArray_5");

    lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_1}"));
    lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_2}"));
    lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_3}"));
    lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_4}"));
    lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_5}"));

     temp = lr_paramarr_random("TestArray");

    //lr_save_string(lr_paramarr_random("{TestArray}"),"temp");

    lr_output_message("数组的随机值%s",temp);
   

    return 0;
}


为什么获取到的temp是空值?怎样可以随机输出数组中的值???


还有用lr_paramarr_idx(TestArray,0);去固定数组的值,怎么输出这个固定数组的值???


请大家指教!!!



作者: Nio    时间: 2016-10-8 14:08
lr_save_string("1","TestArray_1");
这个并没有实现将1存到“TestArray”这个char中,而是存在了“TestArray_1”这个char中

c语言中,char str[10] 表示str可以存放10个字母的字符,不是其它语言的char(string)型的数组;
作者: 喵小妖7117    时间: 2016-10-8 14:39
自己顶!!!!
作者: jingzizx    时间: 2016-10-8 15:24
参数数组必须满足以下两个条件:

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

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

作者: jingzizx    时间: 2016-10-8 15:24
char TestArray[5];
把这个定义去了试试
作者: 喵小妖7117    时间: 2016-10-8 15:50
jingzizx 发表于 2016-10-8 15:24
char TestArray[5];
把这个定义去了试试

没有用。


这个函数是可以的:

        sss = lr_paramarr_idx("TestArray",1);
        lr_output_message("数组的固定值%s",sss);


但是lr_paramarr_len()这个跟lr_paramarr_random()一样都不行。
作者: fhhh_eyou    时间: 2016-10-8 17:23
char TestArray[5];
       char *temp;
       temp="12";

1.定义类型错误。char ?  空  temp 定义类型。
2.取值错误。  lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_5}"));

作者: 喵小妖7117    时间: 2016-10-9 08:46
fhhh_eyou 发表于 2016-10-8 17:23
char TestArray[5];
       char *temp;
       temp="12";

1、数组是这样定义的哦。char paramArrayName[10];
2、lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_5}"));这句话能够正常输出,没有错哦。
3、无法正常输出的是lr_paramarr_random()这个函数的部分
作者: 喵小妖7117    时间: 2016-10-9 09:18
我补充一下问题。
1、随机取数组值函数lr_paramarr_random 运行之后取值为null
脚本如下:
        char *value;
        char TestArray[3];
        lr_save_string("testA","TestArray_1");
        lr_save_string("testB","TestArray_2");
        lr_save_string("testC","TestArray_3");
        value=lr_paramarr_random("TestArray");        //获取数组的随机值
        lr_output_message("value=%s",value);      //输出value=null


2、获取数组长度函数lr_paramarr_len  运行 后输出的长度为0
脚本如下:


         int len;
        int count;
        char TestArray[3];
        lr_save_string("testA","TestArray_1");
        lr_save_string("testB","TestArray_2");
        lr_save_string("testC","TestArray_3");

        len=lr_paramarr_len("TestArray");     //获取数组长度方法1

        count=atoi(lr_eval_string("TestArray_count"));     //获取数组长度方法2

        lr_output_message("数组的长度len=%d",len);      //输出len=0

        lr_output_message("数组的长度count=%d",count);    //输出count=0


大家有知道为什么的吗?求解答。

作者: 喵小妖7117    时间: 2016-10-9 15:49
顶顶顶
作者: 喵小妖7117    时间: 2016-10-11 15:29
这个问题我解决了,请看下面的解答!
作者: 喵小妖7117    时间: 2016-10-11 15:32
因为使用关联函数获取的数组是有长度的,而我自定义的数组没有初始化数组长度,所以导致lr_paramarr_len()和lr_paramarr_random()函数获取的值不正确。

下面试正确的脚本:
1、关于  lr_paramarr_len()
@@@int lr_paramarr_len(const char * paramArrayName);

        char TestArray[3];      //声明一个数组变量
        int count;          //声明一个整型变量用于保存数组的长度
        int len;

        lr_save_string("test","TestArray_1");      //初始化数组的每个元素
        lr_save_string("a","TestArray_2");
        lr_save_string("array","TestArray_3");

        lr_save_string("3","TestArray_count");     //初始化数组的长度


        count=lr_paramarr_len("TestArray");     //获取数组的长度
        lr_output_message("数组的长度是:%d",count);     //输出数组的长度


2、关于  lr_paramarr_len()

@@@lr_eval_string(“{paramArrayName _count}”);
        char TestArray[3];      //声明一个数组变量

        lr_save_string("test","TestArray_1");      //初始化数组的每个元素
        lr_save_string("a","TestArray_2");
        lr_save_string("array","TestArray_3");

        lr_save_string("3","TestArray_count");     //初始化数组的长度


        //这里注意,使用lr_eval_string()函数获取到的变量是字符型
        // 需要用atoi()强制转为整型变量,才能正确输出
        lr_output_message("数组的长度是:%d",atoi(lr_eval_string("{TestArray_count}")));     //输出数组的长度


3、关于lr_paramarr_random()
@@@char * lr_paramarr_random(const char * paramArrayName);
        char TestArray[3];      //声明一个数组变量
        char *str;    //定义一个变量来保存数组的元素

        lr_save_string("test","TestArray_1");      //初始化数组的每个元素
        lr_save_string("a","TestArray_2");
        lr_save_string("array","TestArray_3");

        lr_save_string("3","TestArray_count");     //初始化数组的长度

        str=lr_paramarr_random("TestArray");       //随机获取数组中的某个元素值保存到变量str中

        lr_output_message("数组的随机值%s",str);      //输出变量str的值,即数组的随机元素值


注意,这里一定要有【lr_save_string("3","TestArray_count");     //初始化数组的长度 】,不然执行的结果是错误的哦!


大家可以自己试试!
作者: 喵小妖7117    时间: 2016-10-24 08:41
Nio 发表于 2016-10-20 16:47
lr_save_string("1","TestArray_1");
这个并没有实现将1存到“TestArray”这个char中,而是存在了“TestAr ...

我知道 是将1存到TestArray_1中。

但是你说的  char str[10]是表示可以存放10个字母的字符,我有点晕。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2