51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6111|回复: 39
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-8-6 11:07:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
脚本中一个参数x,它的取值范围有多个,如200~400、2000~4000、-400~-200、……,要求在这些范围内随即取一个值,参数化时应该如何实现?

在补充一下,另一个参数y,如果x取200~400,y就取300~500;x取-400~-200,y取-600~-300;x取2000~4000,y取3000~6000;……以此类推(x和y的取值都没有规律,前面只是举个例子),x每取一个范围,y也要在一个与它对应的范围内取值,这样做x和Y的参数化又该如何做呢?

[ 本帖最后由 lxlye 于 2010-8-10 14:14 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    回复 36# 的帖子

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

    使用道具 举报

    该用户从未签到

    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;
    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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

    回复 34# 的帖子

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

    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}")) ...

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    回复 28# 的帖子

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

    使用道具 举报

    该用户从未签到

    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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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

    回复 26# 的帖子

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

    使用道具 举报

    该用户从未签到

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

    回复 25# 的帖子

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

    使用道具 举报

    该用户从未签到

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

    回复 23# 的帖子

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

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

    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}
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    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,你有其他更简单的方法?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-27 17:18 , Processed in 0.083355 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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