jieer213 发表于 2008-3-18 17:00:27

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

现在有两个参数,第一个参数个数不定,可能多可能少,第二个参数个数固定的,我想让执行第一参数的时候,第二个参数随机取或者循环取,如何做?

zhou840401 发表于 2008-3-18 17:04:06

不是很明白你的意思,你可以发一个例子上来.

jieer213 发表于 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参数是随机的,或者循环执行这两个参数

flyfly310 发表于 2008-3-18 17:35:46

原帖由 jieer213 于 2008-3-18 17:29 发表 http://bbs.51testing.com/images/common/back.gif
我有两个参数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

jieer213 发表于 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

jieer213 发表于 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
有没有自动的方法,我这个参数也是定期更新的,手工输入,日后的维护很麻烦,谢谢

jieer213 发表于 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

jieer213 发表于 2008-3-18 18:10:16

那位大侠给个回复

不胜感激

gy21st 发表于 2008-3-18 18:35:43

一般来说,同一个data sheet中的数据最好行数一致,如果出现你这种情况,多加一个data sheet,将参数放在不同的data sheet中应该比较好解决。或者你也可以把p_Text参数定义成环境变量或常数,都很容易实现你的需求。

jieer213 发表于 2008-3-18 18:40:31

原帖由 gy21st 于 2008-3-18 18:35 发表 http://bbs.51testing.com/images/common/back.gif
一般来说,同一个data sheet中的数据最好行数一致,如果出现你这种情况,多加一个data sheet,将参数放在不同的data sheet中应该比较好解决。或者你也可以把p_Text参数定义成环境变量或常数,都很容易实现你的需求。
感谢回复,两个疑问,第一不明白你说的“将参数放在不同的data sheet中应该比较好解决”是不是再定义一个action,第二把p_Text参数定义成环境变量,我尝试了,但不确定name 选择哪个,能不能说的详细点,谢谢

gy21st 发表于 2008-3-19 11:00:53

回复 10# 的帖子

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

higkoo 发表于 2008-3-19 11:25:09

RandomNumber

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

如果是LR,就很容易实现了,Hoho...

zhou840401 发表于 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").

假装不在 发表于 2008-3-19 11:39:35

路过学习学习。

jieer213 发表于 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"), thenp_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")

jieer213 发表于 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

MarsNoNo 发表于 2008-3-19 18:16:59

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

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

[ 本帖最后由 MarsNoNo 于 2008-3-19 18:18 编辑 ]

jieer213 发表于 2008-3-19 18:55:07

问题解决,谢谢各位

问题解决,谢谢各位

flyfly310 发表于 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 编辑 ]

cxwtomcat 发表于 2009-10-27 16:41:08

good
页: [1]
查看完整版本: qtp参数化的时候如何让某个参数循环执行?