51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 6276|回复: 19
打印 上一主题 下一主题

[原创] qtp参数化的时候如何让某个参数循环执行?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-3-18 17:00:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在有两个参数,第一个参数个数不定,可能多可能少,第二个参数个数固定的,我想让执行第一参数的时候,第二个参数随机取或者循环取,如何做?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-3-18 17:04:06 | 只看该作者
不是很明白你的意思,你可以发一个例子上来.
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-3-18 17:29:53 | 只看该作者

说明

我有两个参数p_Location和参数p_Text  ,现在参数p_Location有10条数据,在参数p_Location有10条数据的同时p_Text 只有两中情况,即只有两个参数,如何设置参数参数p_Text 能让p_Location有的10个数据运行时,p_Text参数是随机的,或者循环执行这两个参数
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-3-18 17:35:46 | 只看该作者
原帖由 jieer213 于 2008-3-18 17:29 发表
我有两个参数p_Location和参数p_Text  ,现在参数p_Location有10条数据,在参数p_Location有10条数据的同时p_Text 只有两中情况,即只有两个参数,如何设置参数参数p_Text 能让p_Location有的10个数据运行时,p_Text ...

那你可以这样设计datatable
p_Location       p_Text  
1                a
2                b
3                a
4                b
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-3-18 17:37:06 | 只看该作者

我的方法是将p_Text参数设置

我的方法是将p_Text设置成DATA TABLE类型,选择Location in Data Table 时选择的是Current action sheet
这样运行时选择参数结果是

p_Location        p_Text
1        A
2        B
3        B
4        B
5        B
6        B
7        B
8        B
9        B
10        B
我希望的结果是,运行时参数选择如下:
p_Location        p_Text        p_Text
1        A        随机选取A 或B
2        B       
3        A       
4        B       
5        A       
6        B       
7        A       
8        B       
9        A       
10        B
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-3-18 17:40:23 | 只看该作者

回复 4# 的帖子

我就是想这样,但不知道如何设置,难道要这样手工写入
p_Location        p_Text      
1                           A      
2                            B        
3                              A        
4                             B        
5                              A        
6                            B        
7                            A        
8                              B        
9                            A        
10                             B
有没有自动的方法,我这个参数也是定期更新的,手工输入,日后的维护很麻烦,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2008-3-18 17:43:06 | 只看该作者
我就是想这样,参数设置如下
p_Location        p_Text      
1                           A      
2                            B        
3                                   
4                                    
5                                    
6                                 
7                                 
8                                    
9                                 
10        

执行结果取参数是:
p_Location        p_Text      
1                           A      
2                            B        
3                              A        
4                             B        
5                              A        
6                            B        
7                            A        
8                              B        
9                            A        
10                             B
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-3-18 18:10:16 | 只看该作者

那位大侠给个回复

不胜感激
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-3-18 18:35:43 | 只看该作者
一般来说,同一个data sheet中的数据最好行数一致,如果出现你这种情况,多加一个data sheet,将参数放在不同的data sheet中应该比较好解决。或者你也可以把p_Text参数定义成环境变量或常数,都很容易实现你的需求。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2008-3-18 18:40:31 | 只看该作者
原帖由 gy21st 于 2008-3-18 18:35 发表
一般来说,同一个data sheet中的数据最好行数一致,如果出现你这种情况,多加一个data sheet,将参数放在不同的data sheet中应该比较好解决。或者你也可以把p_Text参数定义成环境变量或常数,都很容易实现你的需求。

感谢回复,两个疑问,第一不明白你说的“将参数放在不同的data sheet中应该比较好解决”是不是再定义一个action  ,第二把p_Text参数定义成环境变量,我尝试了,但不确定name 选择哪个,能不能说的详细点,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-3-19 11:00:53 | 只看该作者

回复 10# 的帖子

1。添加一个datasheet并不需要定义action,手动添加或者用函数添加都没有问题
2。定义成环境变量后就比较简单了,比如要实现你的随机选取,你可以生成一个范围在1~1000的随机数,随机数大于500,name就选A,否则就选择B。或者你可以根据第一个参数的值确定选A还是B,很多方法。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    12#
    发表于 2008-3-19 11:25:09 | 只看该作者

    RandomNumber

    可用随机数试一下,把参数二读到一个数组里,然后在数组里随机取值。

    如果是LR,就很容易实现了,Hoho...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2008-3-19 11:29:36 | 只看该作者
    把p_text的值定义成几个用户自己定义的环境变量的值,有两个就定义两个环境变量,如p_text1='A',p_text2='B',可以在setting的Environment中定义,然后在脚本当中,碰到要取p_text的值,就随机产生一个值(随机值的范围可以在0-2之间,包括2),取它的整数部分,如果为1则p_text=Environment("p_text1"),为2则p_text=Environment("p_text2").
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2008-3-19 11:39:35 | 只看该作者
    路过学习学习。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
     楼主| 发表于 2008-3-19 16:35:18 | 只看该作者

    回复 13# 的帖子 我是刚刚学qtp,能不能麻烦再帮我看看我写的这个,执行不过去

    Browser("Browser").Page("jieer222的音乐小屋-").WebEdit("top_txtUserName").Set RandomNumber("p_Text")
    If p_text=1,p_text=Environment("p_text1"), then  p_text=2 , p_text=Environment("p_text2").
    wait(3)
    Browser("Browser").Page("jieer222的音乐小屋-").WebEdit("top_txtUserName").Set Environment("p_Text_1")
    wait(4)
    Browser("Browser").Page("jieer222的音乐小屋-").WebEdit("top_txtUserName").Set Environment("p_Text_1_2")
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2008-3-19 17:55:09 | 只看该作者

    修改了程序,能正常执行,但执行结果只执行then后的语句

    程序如下:
    Browser("Browser").Page("jieer222的音乐小屋-").WebEdit("top_txtUserName").Set RandomNumber("p_Text")
    说明:定义p_Text为随机数,设置from1 to2   选择 为每次测试循环
    If 1 Then Browser("Browser").Page("jieer222的音乐小屋-").WebEdit("top_txtUserName").Set Environment("p_Text_1_2") Else   Browser("Browser").Page("jieer222的音乐小屋-").WebEdit("top_txtUserName").Set Environment("p_Text_1") End if
    说明:定义两个环境变量("p_Text_1_2"),("p_Text_1")   希望p_Text=1 执行("p_Text_1_2"),否则执行("p_Text_1")   
    问题:

    从运行结果看,执行过程中执行动作如下,为什么无论是1,或者2都执行的是p_Text_1_2
    p_Text      
    1                 p_Text_1_2
    2                p_Text_1_2
    2                p_Text_1_2
    1                p_Text_1_2
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2008-3-19 18:16:59 | 只看该作者

    我的方法是把参数写在txt或者excel中。

    我的方法是把参数写在txt或者excel中。
    用qtp读取参数,再分别实现参数化了。
    我不太喜欢用datatable,很麻烦,不如用外部数据驱动!
    这样一来,我就很方便的可以取得任何需要参数化的数据,然后随心所欲的使用这些外部数据,而不是仅仅局限于qtp自带的datatable!
    然后再结合setroporperty("")来给对象设置值。

    [ 本帖最后由 MarsNoNo 于 2008-3-19 18:18 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
     楼主| 发表于 2008-3-19 18:55:07 | 只看该作者

    问题解决,谢谢各位

    问题解决,谢谢各位
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2008-3-19 21:34:03 | 只看该作者
    刚看到消息,呵呵,解决了就好
    感觉还有一些解决方法
    1。利用qtp参数化你的数据可以,但是遇到复杂的数据驱动并不是很方便,如果需要的话可以把excel倒出到sqlserver或者其他数据库中
    然后写sql语句来方便的准备你的驱动数据,这样对datatalbe里面数据的操作就灵活些
    2。另外可能这里可以用正则表达式来实现,定义个变量,对变量用正则表达式表示
    具体的我也没试,看了http://bbs.51testing.com/thread-76208-1-1.html的帖子觉得可行,你有空可以试试看,不过会比较麻烦

    [ 本帖最后由 flyfly310 于 2008-3-19 22:01 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2009-10-27 16:41:08 | 只看该作者
    good
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-9 21:44 , Processed in 0.080647 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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