回复 20# 的帖子
"每一次调用function是一次action的循环",这句能再详细解释下么?脚本的结构到底是怎样?
是将每个功能放在各个Action中,然后通过一个Function来RunAction;还是直接把脚本都封装在Function中? 这样吧,你可以按我说的尝试一下
下面这段代码
Sub test1()
msgbox "test1"
End Sub
Sub test2()
msgbox "test2"
End Sub
你保存为一个.vbs
然后新建一个脚本,引入刚才的.vbs库
脚本代码写入
Execute datatable(1,dtGlobalSheet)
然后在datatable里面的global sheet里的第一列,填写两行,分别是test1,test2
其实这就是我们的组织方式,具体测试代码都是function或者sub,每一个是一个功能点颗粒,以vbs库的形式import到用于组织的脚本main中
这个脚本main其实真正有意义的就是datatable里填写的东西
每一行就是一个调用,qtp自己就会把函数名作为参数循环去取这执行
settings里面的错误处理设置为遇到错误进入下一个action循环就好了
你可以自己故意加一个错误代码到test1里面,比如被零除之类的,再试试看,是不是直接跳出test1而运行test2
从一开始没有错误处理,到后来用脚本中加入on error处理,再到封装函数,每个函数中on error处理,并加入err对象捕捉等等;发展到现在,原来这些都摒弃不用了,只用一个设置,再加我写的解析qtp日志的方法。既可以捕捉到所有的错误,也可以实现测试人员希望的无人值守。
最开始用action,发现action的添加非常麻烦,又没有api可以用;于是想到vbs,以lib形式import进来,有api可以调用,添加起来非常方便。于是脚本都进了vbs变成了function
目前还有一个最大的麻烦,始终解决不了,就是对象库的维护,一直是一件很头疼的事情。
[ 本帖最后由 rcpp 于 2008-9-2 16:59 编辑 ] 的确不好用 很不爽 本人用的不好 学习了 听得晕晕呼呼的!能在说详细点吗?
需要有中间设置的细节呀 要不大家都很难理解的
至少我没听明白 :( 请问楼主,如果你的一个function里的功能点,出现了必录项校验的错误,弹出一个对话框提示某文本框的内容不对,(比如身份证有效性检验),如果不正确录入,当光标移动到其他位置时,就会反复弹出校验的对话框,请问你的脚本会怎么处理?跳出了当前的function,后续的function似乎也无法执行,因为那个提示框如果不做处理,其他操作也无法执行。
回复
原帖由 rcpp 于 2008-9-2 14:09 发表 http://bbs.51testing.com/images/common/back.gif……
你不会是只登录一下,然后把所有操作做完吧?
我们以前也是这么设计,后来抛弃了,改成每一个点都独立登录登出
一次登录然后所有操作全做完,这样脚本耦合太高了
又不是所有功能点都有执行顺序的,大部分功 ...
你这样每一次都独立做一次登入与等出,不觉得代码冗余了吗? 呵呵,25楼和26楼的问题就是互相的答案
补充一句就是,登出点无论成功失败,窗口都会关闭,而登入点总是新开窗口的 我Globalsheet来控制这个脚本的运行。一个Action就是一个Function;然后用Main这个Action来调用需要运行的Function,好像还不错,不知道能否扑捉到出错的详细信息,例如:截图,消息框等等。
我们目前还是用Recovery Scenario来控制出错后的处理。 每一次调用function是一次action的循环,每一个function是一个校验点,这样不错。
但是如果一些校验的case是需要在执行多步后才能达到需要校验的位置,并且在你的粒度比较小的情况下,是否会花费很多时间在反复创建校验点的准备工作上?
另外,采用你的出错便退出并进行下一个校验点的的策略的话,用action封装功能校验点是一样的。并且也不是在每一行都尝试要获取Err对象吧,Recovery Scenario可以让出错在捕捉并处理异常。 原帖由 没有蛀牙 于 2008-9-2 13:17 发表 http://bbs.51testing.com/images/common/back.gif
事实上,你一步出错,后面的都会fail
所以应该考虑做出错后的恢复 原帖由 rcpp 于 2008-9-2 16:58 发表 http://bbs.51testing.com/images/common/back.gif
这样吧,你可以按我说的尝试一下
下面这段代码
Sub test1()
msgbox "test1"
End Sub
Sub test2()
msgbox "test2"
End Sub
你保存为一个.vbs
然后新建一个脚本,引入刚才的.vbs库
脚本代码写入
Ex ...
为什么对象库管理会成问题呢?使用一个大的整合好的基础对象库不就可以了吗。
页:
1
[2]