51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2346|回复: 9
打印 上一主题 下一主题

[原创] 怎么随机取一个列表中的某一条数据

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-11-17 17:37:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
需求背景:  在测试的时候,服务器端返回一个列表可能是多条数据,并且每次返回的数据了不一致,目前我每次能够取到数据的总量,由于自己不会怎么随机取,所以在脚本中写死了,始终取第一条数据,但是从实际中讲,这是不对的。

问题:怎么能随机的取这些其中的一条。


新手求助,多谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2009-11-17 23:36:59 | 只看该作者
自己顶下,怎么没人给帮助的!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-11-18 14:52:06 | 只看该作者
可以录制到取系统某条数据的脚本吗,可以的话把这个条数参数化,取随机数字。。。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-11-18 14:53:05 | 只看该作者
关联后用lr_paramarr_random()函数即可
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-11-18 15:00:59 | 只看该作者
lr_paramarr_random()
这个是啥函数??
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-11-19 16:14:01 | 只看该作者
这个问题怎么没下文了?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2009-11-19 17:09:48 | 只看该作者

回复 3# 的帖子

因为每次取的数据条数不一致,这里如果在参数里统一做的话,那可能存在访问的数据部存在的想象,这其实又造成了一种错误。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2009-11-19 17:11:36 | 只看该作者

回复 4# 的帖子

这个函数怎么用,随机值怎么设定;
我这里要求随机值必须是0——我的列表数据的条数;
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-11-19 18:21:49 | 只看该作者

回复 7# 的帖子

那可以设置两个参数,一个参数是你的查询条件,一个是要取 的记录号,只要这个记录号不大于你的查询条件查出的最大记录就可以,这样不会出现访问不存在的记录的情况,呵呵,仅供参考。。。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2009-11-20 12:20:44 | 只看该作者
lr_paramarr_random()函数作用是:随机取得关联回来的参数数组的值。

附,何为参数数组:在使用web_reg_save_param函数时,当设置Ord=All时,关联返回的就是一个参数数组,在LR9.X的版本提供支持。参数数组中参数的名称变成了param_x (多了_x,x表示参数数组中的索引)
在8.X的版本中不提供该函数,所以要随机取得值需要使用到rand()函数和sprintf组合来构造出一个类似param_1的字符串作为参数的名称,例子如下:

以LR自带的webtours为例,启动后可练习如下代码:

web_reg_save_param("flightnumber",
                "LB/DIG=##/##/####>",
                "RB/ALNUMIC=<td align=^enter>",
                "Ord=ALL",
                LAST);

        web_submit_data("reservations.pl",
                "Action=http://localhost:1080/webtours/reservations.pl",
                "Method=POST",
                ITEMDATA,
                "Name=advanceDiscount", "Value=0", ENDITEM,
                "Name=depart", "Value=Denver", ENDITEM,
                "Name=departDate", "Value=11/29/2009", ENDITEM,
                "Name=arrive", "Value=London", ENDITEM,
                "Name=returnDate", "Value=11/30/2009", ENDITEM,
                "Name=numPassengers", "Value=1", ENDITEM,
                "Name=seatPref", "Value=None", ENDITEM,
                "Name=seatType", "Value=Coach", ENDITEM,
                "Name=.cgifields", "Value=roundtrip", ENDITEM,
                "Name=.cgifields", "Value=seatType", ENDITEM,
                "Name=.cgifields", "Value=seatPref", ENDITEM,
                "Name=findFlights.x", "Value=44", ENDITEM,
                "Name=findFlights.y", "Value=15", ENDITEM,
                LAST);

        b = lr_paramarr_len("flightnumber");

        for (w=0; w<b; w++) {
                lr_output_message(lr_paramarr_idx("flightnumber", w+1));
        }

        lr_output_message(lr_paramarr_random("flightnumber"));

// lr 8.x 使用,无非就是用sprintf拼出flightnumber_x这样的参数名字.
        for (w=0; w<atoi(lr_eval_string("{flightnumber_count}")); w++) {
                sprintf(str, "{flightnumber_%d}", w+1);
                lr_output_message(lr_eval_string(str));
        }
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-18 20:42 , Processed in 0.076303 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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