2012年给力的QTP原创大篇《精通QTP——自动化测试技术领航》现已上市,她:是51Testing软件测试网作品系列的第9本;是目前市面上唯一的绝对科学系统化的QTP教科书;覆盖面广但却又剔除了所有不实用的内容且素材新颖、不再老套;实用价值高、蕴含了2位作者的全心全意。可以说她是一本全新全绎的QTP技术讲义,非常有信心能让读者在读了该书后直接上手企业级项目。

【X档案,原创】完全解密+完整透析关于QTP中“相对路径”的使用技巧及原理

上一篇 / 下一篇  2010-02-05 14:45:40 / 个人分类:原创

查看( 848 ) / 评论( 56 )

转载请指明出处!谢谢~

引言:大家都知道,在实际的自动化项目运用中,相对路径设置的重要性,QTP自然也是!我们知道,用QTP做自动化项目,需要将各个模块细分化,写脚本编写思路也是将一个个业务模块进行分解编程,经常要用到Call to Existing Action这个功能,用来调用外部可共享的脚本。现在假设我的脚本A的保存路径位置是:D:\实验\脚本集\脚本A,OK,此时我重新建立新脚本,脚本名就叫我的调用脚本实验吧。这个脚本的作用就是专门用来调用外部脚本的,调用方法暂时略过,下面讲解。OK,假设现在我们调用外部脚本“脚本A”的时候,使用了绝对路径,即:D:\实验\脚本集\脚本A,好,此时,你的兄弟或者姐妹或者领导要看你的脚本,并且要运行下!你很开心地把脚本拷给别人,用的U盘居然还是名牌“金士顿”的,传输的真快,一会会就拷给对方了,正当你得意之时,其实,你已经面临着一场灾难,胜过**的一场大灾难,这个堪比“2010”的灾难是什么?原来,你兄弟或者姐妹或者领导将这个脚本集存放在了E盘下,我靠~打开脚本一看。。。完蛋了~只见QTP无情的提示:Missing Action:Action1   From Test:脚本A,瞬间世界安静了。。。呵呵,好了,不开玩笑了,只是借此来表达出设置“相对路径”的重要性,所以在调用外部脚本时,请务必选择“相对路径”。

正文:其实说到这里,也还是没有到重点,关于设置相对路径的方法和重要性,其实已经有前人写过类似的文章了,可以BAIDU搜寻下,不难找到!但是我发觉,前人所写的文章并没有彻彻底底的描述清楚,不知道是叙述不清晰(因为前人文章貌似没有图文注解)还是压根他们自己都没彻底的完全搞清楚,导致了这个文章其实并没有多少指导意义!最多只是让大家了解到了有相对路径这么一个概念和重要性而已!当然,我们还是要感谢前人,我也正是先从研究他们的文章来彻底搞清楚QTP关于相对路径的使用技巧和原理的。由于以前做项目我也不关注路径问题,最近吃了亏,原因反正就是和上面的小故事差不多吧,所以痛定思痛,下定决心一定要把QTP的设置相对、绝对问题搞的明明白白!因为今朝的疏忽、得过且过会导致以后的无法弥补。
好了,先开始用图文的方式写出整个使用过程,中间再穿插一些原理介绍和技巧。
第一步:我在E盘下建立了这么一个文件夹路径:E:\试验\脚本,我将要建立的两个QTP脚本会放到这个路径下

第二步:准备开始创建两个脚本了,名字分别为:我是被外部调用的脚本调用脚本
先写“我是被外部调用的脚本”的脚本内容吧,很简单,一句话:MsgBox "我被调用成功了!",OK,保存下,保存在那个路径下面
然后要写“调用脚本”了,脚本内容就是:RunAction "Action1[我是被外部调用的脚本]", oneIteration,很明显,我只在这个脚本内做了调用的操作
下面,也顺便的过一遍基础知识,用图文并茂的方式,关于怎么调用,以及怎么设置绝对路径和相对路径等,我的QTP10.0的,其它版本可能有稍许不同,但也差不到哪去,都一个妈生的
1、

STEP1.JPG

————————————————————————————————————————————————————————————
2、

STEP2.JPG

————————————————————————————————————————————————————————————
3、弹出这个界面

STEP3.JPG

————————————————————————————————————————————————————————————
4、这里要节约上传资源,不截图了,出来个Open Test的界面,选择你要调用的脚本,双击,我们这里选择“我是被外部调用的脚本”
————————————————————————————————————————————————————————————
5、选择后,会出现这个Dialog框

STEP4.JPG

————————————————————————————————————————————————————————————
6、还是为了节约资源,这里就不截图了,跳出这个Dialog框后有两个选择,Yes Or NO,选择Yes,则添加为相对路径,选择No,则添加为绝对路径,添加成功后要看添加的是相对的还是绝对的,在左侧试图Test Flow对准那个Action右键,然后点击Action Properties,如果是相对路径的话,Location:我是被外部调用的脚本\Action1,如果是绝对路径的话,Location:E:\试验\脚本\我是被外部调用的脚本\Action1,我们这里不介绍绝对路径,所以选择添加为“相对路径”,点击Yes。
————————————————————————————————————————————————————————————
7、OK,到这一步,调用外部脚本成功(添加的是相对路径),也自动生成了这么一句代码:RunAction "Action1 [我是被外部调用的脚本]", oneIteration
————————————————————————————————————————————————————————————
插一句:好了,整个过程大家都明白了吧,呵呵,相对路径添加好了,大事告成,这下安逸了,随便别人怎么蹂躏QTP都不会出问题了,我管你放到A盘还是B盘下,我是相对路径我怕啥!呵呵,这么简单?这么简单,我今天写这篇文章干嘛?你错了,就搞到这里,你试试看,让你的兄弟或者姐妹或者领导把盘符换成D盘好了,脚本不丢失,你打我!接下来,正是讲解相对路径的精髓部分,大家瞪大眼睛,忍住呼吸,仔细往下看,开始讲解QTP关于相对路径的工作原理了,万物原理最重要了。





第三步:点击Tools-->Options-->,选择Folders,来到这个界面,见图:

STEP5.JPG

开始讲解了:其实,我们在刚才设立了相对路径后,QTP自动的在这里生成了一个路径,这个路径才是起作用的路径:我们来拼装下,图里的路径是:E:\试验\脚本,那么还记得之前设置成相对路径后的Location吗?是什么?是:我是被外部调用的脚本\Action1,你把他们两“拼接”起来,路径就是:E:\试验\脚本\我是被外部调用的脚本\Action1,看到了吗?其实,即使你刚才设置的是相对路径,其实!它仍然是一个“绝对路径”!其实直到这一步,前人们还是有写到的,但是这个原理,以及之后的内容,就再也搜索不出来了。。。至少,我没看到过带有中文字的。。。现在你懂了吧?你还敢得意忘形的随意让其他人将你的脚本随意放在哪个文件夹下吗?呵呵~要是放到其它文件夹,可以,但是需要手动去重新配置下路径,就在这里配置的!但是这样,也太不方便了吧!好了,接下来,就教大家如果让QTP自动的去识别到路径,让“相对路径”真正的发挥其作用。

第四步:分析和运用、彻底透析和掌握
1、我们先来看这张图,图中,我尝试着把路径设置为D:\试验\脚本,此时,文件夹的右下角出现了一个小小的“问号”,这就说明,脚本找不到了,MISS了,原因是什么?很简单,因为这个路径下并没有我想要的脚本

STEP6.JPG

————————————————————————————————————————————————————————————
2、那么,我把路径改成../,各位看官再看看图中,什么效果,呵呵,是不是惊奇的发现“问号”消失了?!

STEP7.JPG

————————————————————————————————————————————————————————————
3、到这里,才是真正的设置成为真正意义上的相对路径(相对路径知识点就不讲解了,百度下吧~)!点击Apply,点击OK,圆满完成。
————————————————————————————————————————————————————————————
4、接下来试试效果吧,我把“E:\试验”这个文件夹剪切到F盘下吧(不想再用D盘举例),打开脚本“调用脚本”,你看看,还会不会出现MISS的情况,如果MISS,借用周立波的一句话,你把我送到神经病医院,这个时候说明,真正意义上的相对路径设置成功了
————————————————————————————————————————————————————————————
5、还没结束呢,看官您在看看图中,看看什么变化!

STEP8.JPG

可以看到,路径从E盘自动的变成了F盘了,咦?我刚才不是明明设置成../的嘛,怎么变成这样的,其实这是正确的, 说明../相对路径起作用了,如果你放到B盘,QTP一样会自动的把路径变成B:\试验\脚本,呵呵~
————————————————————————————————————————————————————————————
6、来,我们再来做个试验,帮HP公司免费测试一下QTP,我增加几个目录,把我的2个脚本放在F:\试验\1\2\3\脚本下,增加了3层文件夹,看看相对路径还是不是管用,仍然先设置成../,我们来看看效果,见图:

STEP9.JPG

呵呵,还是自动能识别到的啦

未完待续。。。敬请期待下一集

总结:好了,字数有限,先简短的总结下,更多奥秘放在2楼!其实,写这篇文章是为了帮助更多的新人了解这个机制,也不光是新人啦,相信很多用QTP很久的人也不是很了解这个机制!包括我自己玩QTP2年了,今天也才彻彻底底地想到去研究下,因为迫不得已啊,不可能永远设置成绝对路径吧,太不方便了!我很用心的在写,只是希望大家看了文章,可以回复一下下啦,小顶我一帖,这也对写手是一种动力和鼓励吧,别总是剑过不留名~因为,你不是大侠!你是一个测试工程师同时也希望,已经了解这个机制的朋友顶顶~毕竟,写一篇文章,这么多字,也不容易嘛~同时欢迎大家去我的空间玩,这篇文章我也会发到我的空间里~


2楼还有其它奥义和一些问题哦~先让我喝口水,歇息下~

最后提前祝大家新春快乐,来年工资高涨~也希望中国自动化领域更加成熟

[本帖最后由 yujie6832 于 2010-2-5 14:30 编辑]


TAG:

精通QTP —— 自动化测试技术领航 yujie6832 发布于2010-02-05 11:18:28
经过实验,初步断定,Search List存在不稳定因素或者BUG,大多为显示上的缺陷,实质性是有作用的
稍作举例和说明,见下图:


STEP10.JPG


如图,第一点,QTP在搜索到相对路径后,会自动识别为当前路径,假设第一条,大家看下,如果这个LIB在E盘下,那么它也会自动识别成E盘下。。。的LIB文件夹,这点肯定没问题,
然后我在试验中发现其实显示上并不稳定,比如我设置了../../../底层脚本/公共,../../../底层脚本/前台,../../../底层脚本/后台,../../../底层脚本/集体,这样4个相对路径列表,然后我的脚本里正好有3个脚本针对前台、后台、集体但是没有脚本是针对公共的,打开以后,所以脚本无论放到哪个盘符下,都不会出现MISS了,功能性没有问题,但是显示肯定是有问题的,比如大家看图中,他自动合并成了脚本中并没有的“公共”,而且这样的显示也并不稳定,捉不到规律
我们再看看,我有意点击一个NEW,创建新脚本,意思就在于让这些路径都读不到应该有的脚本路径,那么他们自然会变成问号状态,而现在的显示结果呢?不但我设置的5,6个路径没有全部出来,图中只出来一个../../../底层脚本/前台,而且居然另外两条的显示还是“显示为在读到脚本相对路径的情况下”的显示方法

总结下:这一块还是有点问题的,经过我的实验,如果高人比较通略这块的话,请回帖,包括我自己也非常想知道这块到底是BUG还是我的误操作,或者其他,目前初步也只能断定,这块有显示BUG了~好了,关于这个文章就写到这吧,大家踊跃讨论

更正:又有新发现,每次点击TOOLS--OPTIONS--FOLDERS,都会每次新显示一条路径。。。大家可以试试~我断定,这个就是BUG,呵呵~

[ 本帖最后由 yujie6832 于 2010-2-8 10:24 编辑 ]

[ 本帖最后由 yujie6832 于 2010-2-8 10:38 编辑 ]
IQuickTest领先技术研究 zzxxbb112 发布于2010-02-05 11:20:42
顶你个肺~~   吃好饭给我快点更新~不然你自己看着办~
testlab的个人空间 testlab 发布于2010-02-05 11:39:35

liweilirui发布于2010-02-05 11:55:52
标题很吸引
麦田的守望者 tachibana814 发布于2010-02-05 13:56:36
标题党...
wugecat的个人空间 wugecat 发布于2010-02-05 13:57:30
我3点就要去赶火车,请快点
精通QTP —— 自动化测试技术领航 yujie6832 发布于2010-02-05 14:24:32
回复 7# 的帖子
基本完成了,请欣赏
testlab的个人空间 testlab 发布于2010-02-05 16:40:42
没试过,偷懒问一下.
在路径修改为F:\实验\脚本 后,修改目标文件的路径.是必须先再次修改成..\还是QTP会再次自动识别?
精通QTP —— 自动化测试技术领航 yujie6832 发布于2010-02-05 17:17:21
全部是自动的,不然我这文章就没意义了
Jifucy daijianfeng 发布于2010-02-05 17:21:50
顶啊 学习中啊
heqingbluesky发布于2010-02-07 15:24:21
看来还是最基本的:
cd . 和cd ..的区别。
精通QTP —— 自动化测试技术领航 yujie6832 发布于2010-02-07 17:09:23
回复 12# 的帖子
这个本来就是基础知识,但是QTP的这个机制并不是所有人都知道的,呵呵,主要还是写出来帮助新人的 下周会有点更新
testing sunqiang1024 发布于2010-02-08 10:42:32
不错,谢谢版主的提供啊,^_^
ericazou的个人空间 ericazou 发布于2010-02-08 15:27:28
多谢,学习了,试验了一把,也体会了一把。
chenkunlong的个人空间 chenkunlong 发布于2010-02-08 16:37:17
   顶你哟~~现在每天下班前都会来这逛下~~学习学习~~
精通QTP —— 自动化测试技术领航 yujie6832 发布于2010-02-08 17:13:58
谢谢楼上几位的支持,你们的回帖是我的动力
ls_721521的个人空间 ls_721521 发布于2010-02-09 16:20:57
没时间仔细看。。顶一下
老A archonwang 发布于2010-02-10 13:17:45
此贴不错。推荐。
精通QTP —— 自动化测试技术领航 yujie6832 发布于2010-02-10 14:37:33
回复 19# 的帖子
谢谢,你们的鼓励就是我的动力
蓝天伟测试之家 lantianwei 发布于2010-02-10 14:42:14
友情帮顶。。
我来说两句

(可选)

Open Toolbar