51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2067|回复: 7
打印 上一主题 下一主题

[原创] 回答网友提问:关于参数化编程的问题

[复制链接]
  • TA的每日心情
    郁闷
    2017-1-11 15:48
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2007-8-9 14:54:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    前段时间有LR的网友提问如下的问题, 我将自己编写的代码贴出来,大家一起讨论。

    问题:
    我需要做参数化输入
    假设有2个字段: customid和planid,一个customid下有多个planid,
    我需要对customid和planid都做参数化输入,即顺序取一个customid,再随机在这个customid里取一个planid
    但是planid要跟着customid变化
    这是否是关联的问题?
    怎么解决? 思路即可.

    解决的代码:
    Action()
    {
       int i,j,k,rnum;
       char costomid[30];
       char combin_planid[30],planid_temp[30],planid[30];


       //先从costomid_single中顺序取一个costomid;
       strcpy(costomid,lr_eval_string("{costomid_single}"));
       lr_output_message("costomid=%s",&costomid);

       //在combinid.dat中寻找相同costomid的个数;
       j=0;
       strcpy(combin_planid,"#");
       for (i=1;i<10;i++) {
             if (strcmp("end",lr_eval_string("{costomid}"))==0)
               i=1000;
             else
          if (strcmp(costomid,lr_eval_string("{costomid}"))==0){
                     j=j+1;
             strcat(combin_planid,lr_eval_string("{planid}"));
             strcat(combin_planid,"#");
               }
         lr_advance_param("costomid");
       }
       lr_output_message("和%s相同的costomid的个数是=%d",&costomid,j);

       //处理字符串,找出随机的那个planid
       rnum = rand() % j;
       lr_output_message("随机数是:%d",rnum);
       k=0;
       strcpy(planid_temp,"");
       strcpy(planid,"");
       for (i=0;i<50;i++) {
         strncpy(planid_temp, &combin_planid, 1);
             if (strcmp("#",planid_temp)==0)
                k=k+1;
             if (k-rnum-1==0)
                    strcat(planid,planid_temp);
       }
       strncpy(planid,&planid[1],10);

       lr_output_message("你要用的参数costomid=%s,planid=%s",costomid,&planid);


            return 0;
    }

    本帖子中包含更多资源

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

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2007-8-9 17:05:49 | 只看该作者
    不错,顶一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2007-8-9 17:12:34 | 只看该作者
    顶一下~~

    请问,对于由网页上的checkbox中取来的数据如何进行随机取数?
    关键问题是有的数据内容中包含“XXX checked",如何将“checked”除去,使用字符串函数?效果不是很好~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2017-1-11 15:48
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
     楼主| 发表于 2007-8-10 09:04:48 | 只看该作者
    原帖由 suoyi 于 2007-8-9 17:12 发表
    顶一下~~

    请问,对于由网页上的checkbox中取来的数据如何进行随机取数?
    关键问题是有的数据内容中包含“XXX checked",如何将“checked”除去,使用字符串函数?效果不是很好~~



    例如:我有字符串是:"31 records checked", 现在要把”checked“除去,得到"31 records"。可以使用以下的代码实现:
    char check_content[30]="31 records checked";
    char check_wanted[30];
    int  str_len;

    str_len=strlen(check_content)-8;
    strncpy(check_wanted,check_content,str_len);   //8为"checked"以及它之前的空格的长度
    lr_output_message("the check_wanted is:%s",&check_wanted);
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-8-10 09:16:19 | 只看该作者
    谢谢,试试您的办法~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2017-1-11 15:48
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
     楼主| 发表于 2007-8-10 09:24:58 | 只看该作者

    回复 #5 suoyi 的帖子

    LR中对于字符串的处理,我通常用两种方法:
    利用数组处理字符串
    利用指针处理字符串

    不过在这里,我强烈推荐大家使用数组处理字符串。指针比较麻烦,比较容易出错!

    可以详细看我的blog:
    http://www.51testing.com/?120561 ... e_itemid_17561.html
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-8-10 09:50:29 | 只看该作者

    回复 #3 suoyi 的帖子

    我上次发了一个贴,里面有类似的代码,你可以参考一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2007-8-10 15:06:21 | 只看该作者
    我在strncpy()中使用strcspn(),得到"XXX checked"中checked前面的空格,解决的问题。
    例:strncpy(toStr,fromStr,strcspn(fromStr)," "));

    LZ的方法也很好,开始我只想着从前往后,没想过从后向前~~
    对于字符串的问题要具体问题,具体分析~~

    Sands,我的积分神秘失踪了~~sdlkfj9
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-5 01:54 , Processed in 0.073889 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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