Xebium的底层Fitnesse就支持Restful的服务方式,在自带的用户指南中已经有具体的命令说明,先大致提一下:
http://host:port/resource?responder&inputs
官方文档给出的就是以上调用形式,resource就是我们之前在“目录结构和页面类型”中提到的脚本本体,重点在于responder(或者可以解释为针对页面的操作,这样就容易理解了),另外“&”后面可以跟命令的输入参数,可以只是"value"或者"key=value"这种形式。
这里只选择一些重点和实用的进行说明:
1. suite和test命令
这2个都是执行测试用的,主要用于其他系统调用Xebium使其后台运行返回执行结果,例如Jenkins的Fitnesse插件调用方式就是运用了suite或者test这个命令。suite执行页面是TestSuite(测试集),test则是执行TestCase的。
不带input的执行返回的是html格式结果,如果需要返回其他格式的,如xml格式,用于之后其他系统集成输出的话,可以用?test&format=xml,那么结果会以xml格式返回,容易用xpath去解析。
有时,我们的脚本里定义了一些页面参数,比如:
!define a {test}
从含义上看,把字符串“test”赋给了变量a。但是我们在执行的时候却希望传入“game”这个串给a。那么通过?test&a=game来传入,多个参数只要用?test&key1=value1&key2=value2这种形式替换掉页面上赋的默认值。这点在做登录时很有用,用户名,密码都用这种方式传入,避免了改写脚本的麻烦。但要注意一点,http这种协议在传值的时候会有转义的情况发生,如果你要传“&”字符进去,还是需要做URL encoding的。
再来说说远程调试功能吧,要使用远程调试功能,需要在脚本中添加如下命令行:
!define COMMAND_PATTERN {java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8005 -cp %p %m}
或者
!define REMOTE_DEBUG_COMMAND {java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8005 -cp %p %m}
执行时后面跟debug/remote_debug(比如:test?debug),就可以进入远程调试功能,执行时系统会挂起,本地用intellj或者eclipse中配置远程调试,加断点就可以跟进代码。注意一点,debug适用于用java代码开发的调试,remote_debug则适用于其他语言开发的Class调试。
2. raw命令
顾名思义,返回文本形式的原始脚本,页面不做任何渲染,相当于直接把结构目录下的content.txt文件内容直接返回给你。
3. stoptest命令
当用test或者suite运行测试时,不愿意等待测试完成就想中断测试执行,那么用这个命令,其实和用页面在执行时,stop test这个按钮的效果相同。
4. shutdown命令
关闭系统,如果系统启动采用了后台运行模式,那么关闭执行窗口并不会关系整个系统,这时用/?shutdown就可以了,很方便,远程就可以关(但别被不法分子利用了)。
多说无益,看手册你可以发现所有的相关命令。再我看来,Restful方式扩展了Xebium的使用方式,也是作为一个测试服务应该且必须提供的一种服务。用好Restful相当于在任何其他系统中集成了自动化测试模块。