51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

12
返回列表 发新帖
楼主: lxlye
打印 上一主题 下一主题

[原创] 一个参数取值多个范围时,如何做参数化?(已解决,感谢xueying1123和skyzhu两位)

[复制链接]
  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    21#
    发表于 2010-8-6 21:14:16 | 只看该作者
    其实就是一个条件判断嘛,另外最简单的方法,就是做几个相同的action,取不同的参数值,让action随机运行就行了

    LR本来就支持随机,没有必要自己写随机函数之类的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    22#
     楼主| 发表于 2010-8-9 09:21:55 | 只看该作者
    原帖由 skyzhu 于 2010-8-6 18:05 发表
    一句话就行,不用case ,支持多段,否则多了代码都复制傻了。。。。
    用参数值来做参数名,维护也方便,另外可以配合唯一数来控制每段的分布数量
    正负交错的,设置2个参数就行了,1个负数到-1,1个从0开始
    i=atoi  ...


    这个方法我想过,但我要做的参数化包括两个参数,且是相互影响的。比如x和y,x取值范围300~500,那么y对应的就是400~600,而x如果取600~800,那么y对应的要取700~900,x和y的取值范围都是多个且药相互对应。所以还是需要case。或者skyzhu,你有其他更简单的方法?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23#
    发表于 2010-8-9 10:00:31 | 只看该作者

    回复 22# 的帖子

    稍微变化一下就行了
    x=atoi (lr_eval_string(lr_eval_string("{aaaa}")));
    y=atoi (lr_eval_string(lr_eval_string("{bbbb}")));
    aaaa设置随机,bbbb设置与aaaa同行
    aaaa的参数值就是
    {Group1a}  300~500
    {Group2a}  600~800
    {Group3a}
    bbbb的参数值就是
    {Group1b}  400~600
    {Group2b}  700~900
    {Group3b}
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24#
    发表于 2010-8-9 11:16:37 | 只看该作者
    学习了。。很受用
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25#
     楼主| 发表于 2010-8-9 11:32:54 | 只看该作者

    回复 23# 的帖子

    恩 也可以,还有个问题,比如用你上面的方法,x和y我把它们转换成参数后添加到脚本中,这时脚本中有多个地方需要这两个参数,又该怎么做才能每次脚本中用到这两个参数都取一次新的值呢?

    [ 本帖最后由 lxlye 于 2010-8-9 11:37 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    26#
    发表于 2010-8-9 13:19:03 | 只看该作者

    回复 25# 的帖子

    这是LR基本功能
    参数设置   update value on :    each occurence
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    27#
     楼主| 发表于 2010-8-9 13:38:31 | 只看该作者

    回复 26# 的帖子

    楼上能不能给个完整的脚本?我这里怎么就不能随机取值呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28#
    发表于 2010-8-9 14:10:08 | 只看该作者
    原帖由 lxlye 于 2010-8-9 13:38 发表
    楼上能不能给个完整的脚本?我这里怎么就不能随机取值呢?



    还好最近不忙,否则也没空弄了,看附件吧,每次都不一样的
    如果x 1-50,那y 51-100
          101-150,那y 151-200
          201-250,那y 251-300

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    29#
     楼主| 发表于 2010-8-9 15:25:54 | 只看该作者

    回复 28# 的帖子

    恩 辛苦了 我也是这样实现的,可是现在我不知道怎么将参数化出来的值引到以后的脚本中。从而达到参数化的作用。而且引用进去后,每次使用都是随机的值。
    我是用lr_save_int将x和y的值转换成参数,用到以后的脚本中,可这样后面脚本多个地方用的是固定不变的数。
    比较菜,也许不是个问题,可现在确实不知道怎么弄,请指点!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    30#
    发表于 2010-8-10 09:34:08 | 只看该作者
    lr_save 要在每个使用的地方之前都调用一次
    否则你读的不就都是同一个临时参数里的内容了,临时参数和变量没什么区别,不会自己变
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    31#
     楼主| 发表于 2010-8-10 09:37:38 | 只看该作者
       那就麻烦了!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32#
     楼主| 发表于 2010-8-10 09:52:16 | 只看该作者
    有没有其他办法?我直接获得随机值然后用到以后的脚本中。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    33#
     楼主| 发表于 2010-8-10 10:59:30 | 只看该作者
    原帖由 xueying1123 于 2010-8-6 17:16 发表
    Action()
    {
            int i;
            int x;
            int y;

            i=atoi(lr_eval_string("{GroupCount}"));
            lr_output_message("选取了第%d组范围中的数据",i);

            switch(i)
            {
            case 1:
                    x=atoi(lr_eval_string("{xGroup1}")) ...

    用这个脚本怎么才能在以后脚本中用到此参数的所有地方都取随机的而不是固定的一个值呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34#
    发表于 2010-8-10 11:53:24 | 只看该作者
    都是要重复调用的,这是你用这么复杂的随机数的代价
    每个地方都先调用一次算简单的了,或者你可以自己写C的dll,然后用自定义function参数
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35#
     楼主| 发表于 2010-8-10 12:42:38 | 只看该作者

    回复 34# 的帖子

    恩 谢谢!就这样吧!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    36#
    发表于 2010-8-10 13:50:35 | 只看该作者
    如skyzhu所说,要达到每次引用都随机取值的目的,是需要重复调用;

    ----------------------------------
    void getXY()
    {

            int i,x,y;
                       
            i=atoi(lr_eval_string("{GroupCount}"));//Update Value on "each occurrence"
            lr_output_message("选取了第%d组范围中的数据",i);

            switch(i)
            {
            case 1:
                    x=atoi(lr_eval_string("{xGroup1}"));//Update Value on "each occurrence"
                    y=atoi(lr_eval_string("{yGroup1}"));//Update Value on "each occurrence"
                    break;
            case 2:
                    x=atoi(lr_eval_string("{xGroup2}"));//Update Value on "each occurrence"
                    y=atoi(lr_eval_string("{yGroup2}"));//Update Value on "each occurrence"
                    break;
            case 3://全负数
                    x=atoi(lr_eval_string("{xGroup3}"));//Update Value on "each occurrence"
                    y=atoi(lr_eval_string("{yGroup3}"));//Update Value on "each occurrence"
                    break;
            case 4://正负数x取-300~400,y取-500~200
                    x=(rand()%7000)/9-300;
                    y=(rand()%7000)/9-500;
            }

            lr_save_int(x,"x");
            lr_save_int(y,"y");
           
    }



    Action()
    {
           
            getXY();
            lr_output_message("第一次调用:x is %s;y is %s",lr_eval_string("{x}"),lr_eval_string("{y}"));

            getXY();
            lr_output_message("第二次调用:x is %s;y is %s",lr_eval_string("{x}"),lr_eval_string("{y}"));

            getXY();
            lr_output_message("第三次调用:x is %s;y is %s",lr_eval_string("{x}"),lr_eval_string("{y}"));

            getXY();
            lr_output_message("第四次调用:x is %s;y is %s",lr_eval_string("{x}"),lr_eval_string("{y}"));

            return 0;
    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37#
     楼主| 发表于 2010-8-10 13:58:56 | 只看该作者

    回复 36# 的帖子

    我需要用到这些参数的地方太多了,重复调用的话麻烦死了。
    不管怎么样,谢谢两位了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    38#
    发表于 2010-8-12 13:48:59 | 只看该作者
    不错,学习思路
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-3-4 14:18
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    39#
    发表于 2010-8-17 15:16:26 | 只看该作者
    不错,收藏了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40#
    发表于 2010-11-7 10:04:29 | 只看该作者
    设置两个参数,一个参数采用随机,另一个参数采用和参数一同行取值。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 00:59 , Processed in 0.084681 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表