51Testing软件测试论坛

标题: 我也讲讲Action里面的Parameter吧 [打印本页]

作者: jackymail    时间: 2007-9-27 11:31
标题: 我也讲讲Action里面的Parameter吧
Action Parameter

Input value & Out value


树形结构:
Action 1
         Action 2
                  Action 3
                  Action 4

A2可以使用A1的input参数作为默认的输入参数,使用中,实际替代了原有的A2input
当在A1中添加代码调用Action2的时候(这时候把Action2看成一个函数),

Parameter(“A1in”)就成为了函数Action2的输入参数
Parameter(“A1out”)就成为了函数Action2的输出参数

RunAction "Action2", oneIteration, Parameter("A1in"), Parameter("A1out")

而默认情况下,
RunAction "Action2", oneIteration
输入输出参数分别是 A2in A2out



值得传递规律:

每一级都可以给他的下级(被调用者)传递输入参数,并接收下级的输出变量parameter(“A2out”)到本级的输出变量parameter(“A1out”)

包括Test也都是一样的。QC调用Test, Test调用Action, Action调用Action…

最后,关于Action3和Action4

Action4可以使用Action3的输出参数作为自己的输入参数。反之不行,Action3必须要出现在Action4之前,并且处于同级才有这个特性。


相关使用:
Action->Right Click->Action Properties
Action->Right Click->Action Call Properties
打开的窗口就是你需要进行操作的地方,再不会偶也没办法了,文字交流仅限于此。

Jackymail
作者: rivermen    时间: 2007-9-27 12:02
这些都是Action 里的parameter
QTP 还有Test 级别的 parameter,不过只有最外层的Action才能调用

另外,action级的参数传递一般只支持 直接的父子Action关系,
即 如lz例子中
Action1和Action4 之间是不能传递的
作者: jackymail    时间: 2007-9-27 12:08
谢谢你的回复,我刚才仔细看了一下,你说的问题我都有提到,而且关于父子和sibling的问题我也谈到了。

原帖由 rivermen 于 2007-9-27 12:02 发表
这些都是Action 里的parameter
QTP 还有Test 级别的 parameter,不过只有最外层的Action才能调用

另外,action级的参数传递一般只支持 直接的父子Action关系,
即 如lz例子中
Action1和Action4 之间是不能传递 ...

作者: hsjzfling    时间: 2007-9-27 13:40
貌似楼主所表述的只是Action传递参数的一种情况,即:将Action1的输入输出参数都传递给其子Action2这种情况,其表述逻辑关系应该是:
If 调用子Action的语句是 RunAction "Action2", oneIteration, Parameter("A1in"), Parameter("A1out")    Then
   A2可以使用A1的input参数作为默认的输入参数,使用中,实际替代了原有的A2input
   当在A1中添加代码调用Action2的时候(这时候把Action2看成一个函数),

  Parameter(“A1in”)就成为了函数Action2的输入参数
  Parameter(“A1out”)就成为了函数Action2的输出参数
End If

而不是说在任何情况下,A2都可以使用A1的input参数作为默认的输入参数。
偶看看开头怎么看怎么不对劲。。。直到看到RunAction...那句才明白楼主为什么会得出"使用中,实际替代了原有的A2input"这个结论~
作者: hsjzfling    时间: 2007-9-27 13:44
或许是偶误解了楼主的意思,也许楼主的本意就是只是想描述"A2可以使用A1的input参数作为默认的输入参数",而不是要较全面的给新手们讲讲Action中的Parameter吧~
作者: jackymail    时间: 2007-9-27 14:04
是不是我讲的太乱阿?你们2位都是51testing就业学员,应该基础不错啊,怎么好象看不懂我说的呢?一位把我的话重复了一下说我没有说到某某。另外一位说我介绍的是Action2到Action1云云。。

我介绍的是层次的参数使用阿,Test-Action-Sub Action我都提到了阿?还有同级sibling的情况也说清楚了阿。

还有所谓基础的话题,如果说再基础还需要怎样基础呢?就说在Action里面定义的parameter可以在所在的action中使用?

还有就是关于"默认"这个词。不能乱用。

[ 本帖最后由 jackymail 于 2010-4-27 15:26 编辑 ]
作者: hsjzfling    时间: 2007-9-27 15:00
原帖由 jackymail 于 2007-9-27 14:04 发表
是不是我讲的太乱阿?你们2位都是51testing就业学员,应该基础不错啊,怎么好象看不懂我说的呢?一位把我的话重复了一下说我没有说到某某。另外一位说我介绍的是Action2到Action1云云。。

我介绍的是层次的参数使 ...


如果大多数人看完你的描述后都能恍然大悟(悟对了才算),而只有个别人提出疑惑,那么自然就不是你没描述清楚;反之如果没人觉得听懂了,而只有人发表疑问,那么楼主就该斟酌下自己的逻辑以及组织的语言咯~
理解你的意思是一回事,但认可你的描述却是另一回事~

"还有就是关于'默认'这个词。不能乱用。" 澄清一下,貌似"默认"两个字是楼主自己在顶楼用出来的,偶只是复制了下你的话而已,不好意思忘了加引号了~

还有,楼主提到"Action4可以使用Action3的输出参数作为自己的输入参数。反之不行,Action3必须要出现在Action4之前,并且处于同级才有这个特性。"
貌似只有父子关系的Action间才能通过Parameter传递参数,还请楼主解惑,将具体的传递过程描述一下~
根据楼主给的限制条件,偶推测,楼主或许是通过Action2的参数间接达到Action3与Action4之间传递参数的目的吧~

当然,这些小问题并不能掩盖楼主无私的分享自己心得的奉献精神~
作者: rivermen    时间: 2007-9-27 15:32
你说的我看得懂,因为我有这方面的知识,即便你表达的不够完善,我也能用自己的知识去套

可你说的会给不太明白这方面知识的带来误解,你以为自己说清楚了,其实给别人造成歧义了

每一级都可以给他的下级(被调用者)传递输入参数,并接收下级的输出变量parameter(“A2out”)到本级的输出变量parameter(“A1out”)


什么叫下级?Action4 是不是Action1的下级,他们之间能直接调用吗?
作者: jackymail    时间: 2007-9-27 15:34
A2可以使用A1的input参数作为默认的输入参数
恩,我这句话说得有问题,不应该说默认,你给重复了2次,所以我看了比较明显了。以为你说的。默认是指不指明输入输出参数的情况下runaction,指明参数的情况下不叫默认!

还有就是关于你说的父子关系才能传递参数。你和rivermen都是一样的意思,我这次看明白了,我不知道这是不是你们上课的时候别人教的。但是我想澄清一下,你们都理解错了。不知有父子关系,同级参数可以按照文中我所述说的方法传递。
你查看帮助action parameter 这两个关键字就能找到,文中开始的地方就提到了。

尽信他人不如不要学,当然你也不必相信我,实际动手操作才算真实结果。

无论如何,parameter在我看来是非常鸡肋的一个功能。讨论到此作罢,十分感谢楼上各位交流。
作者: jackymail    时间: 2007-9-27 15:37
原帖由 rivermen 于 2007-9-27 15:32 发表
你说的我看得懂,因为我有这方面的知识,即便你表达的不够完善,我也能用自己的知识去套

可你说的会给不太明白这方面知识的带来误解,你以为自己说清楚了,其实给别人造成歧义了



什么叫下级?Action4 是不 ...

Action4不是Action1的下级,我说的下级是指被调用者,我已经加注了括号。阅读文章一定要仔细。

我只是想听听大家的意见,方便我给别人做培训,看来我写的文档还真不行啊。。
作者: rivermen    时间: 2007-9-27 16:00
自己动手是王道,别人说的只能参考。
用自己的实践来验证或者推翻
与诸君共勉
作者: jackymail    时间: 2007-9-27 16:03
原帖由 rivermen 于 2007-9-27 16:00 发表
自己动手是王道,别人说的只能参考。
用自己的实践来验证或者推翻
与诸君共勉

呵呵,有不同意见还可以提出来,直接在msn上跟我说也行。发现问题才能进步啊。

发现你们楼上两位文采都不错。。
作者: dsjlzh    时间: 2007-9-27 16:25
我尝试用参数的作用域来解释一下,不正确的地方请指正。
Action1的输入参数在Action1的作用域中和普通变量的使用是一样的,只是需要写成Parameter("x")的形式,
Action1中的参数不会直接在其调用的Action2中生效,必须以输入参数的形式传入Action2,相当于以实参赋值给形参,而在Action2中除对全局参数可见,是不能够直接使用Action1中定义参数的。
而Action2的输出参数需要再给另外一个变量赋值,这时的作用域是Action1,那么只要Action1可见的变量都可使用。
作者: hsjzfling    时间: 2007-9-27 16:38
貌似楼主眼中只能看到"质疑"而看不到"请求"。。。。。。
    刚尝试了下,帮助文档中描述的"You pass the value from a previous action to the sibling action in which you want to use it. For example:
(Action2) Step 1 -> Action2 -> Action3 -> (Action3) Step 1"
方法确实是可行的。以前也就只尝试过父子关系通过Action Parameter传递参数,但实际应用中从来不会去用这东西(DataTable,Environment都要比它好用的多)~

    楼主的观点还是没错的,偶收回对"Action4可以使用Action3的输出参数作为自己的输入参数。反之不行,Action3必须要出现在Action4之前,并且处于同级才有这个特性。"的质疑~不过楼主能描述清楚些就更好了,不然新手看了肯定会被误导的~

这里再给楼主点小建议:要开班授课写文档,那就得从读者的角度出发考虑问题,讲述一个问题就得全面考虑。就算不能讲全,至少也得把一个问题讲清楚。自己懂是一回事,要能让看的人也很容易懂那就是另外一回事了~(比如yabest的帖子,就能让人很容易弄懂那不算粗浅的问题~)

还是感谢楼主的,纠正了偶持续两个月的一个错误认识~
作者: walker1020    时间: 2007-9-28 00:51
理解了问题是一种能力,能把自己掌握的知识讲出来,也是一种能力。呵呵!
作者: publicaccount    时间: 2007-10-17 12:46
标题: dddd
dddddddddddddddddddddd
作者: 想飞的猪儿    时间: 2007-10-17 15:21
怎么好象争论的很激烈,小菜鸟不能明辨是非了
作者: overfly    时间: 2007-10-17 16:49
温故,知新
作者: vivianhot    时间: 2007-10-19 10:54
学习




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2