基于Oracle的QTP和autoexpect命令
3,231 Views『作者:RickyZhu 转载务必注明出处和作者』
Tag:programming
最近在开发一个类似于QTP的东东,就是基于数据库的录制回放操作自动化工具,这是我们的一个产品的自动化需求。大致是在数据库进行一些操作,然后利用工具记录下这些操作对数据库的影响。以此做为基准(base),回归测试的时候进行同样的操作,看是否产生同样的影响,同则pass,否则fail。
准备用最拿手的脚本语言TCL来实现。这几天做了一些研究,基本有点眉目了,昨天小开推荐我一篇日志,讲的也是自动化脚本的录制,不过貌似跟我的需求还不太一样。好像这篇文章讲的内容也是第一次听说,很有学习价值。转载一下。原文链接: http://rain.snowrain.org/archives/8
昨天从同事那里学到一个很有用的工具,linux典型安装中会自带该工具autoexpect.
假设你需要登录到一个远程服务器上,执行一些脚本,这个过程即可通过autoexpect工具进行自动记录并且变成一个脚本.
在我平常打包时需要做几件事情,从48服务器(A)传几个文件到45服务器(B)上,然后登录到45服务器(B)执行几个shell脚本,然后再从 45服务器上telnet到191服务器(C)上,在191上再执行几个shell脚本,回到45之后再将几个文件传回到48.
简而言之,即从A传文件到B—>登录B—>执行几个B上的命令—>登录C—>执行几个C上的命令—>从B传文件到A上—>Over.
下面说明如何使用autoexpect使这个过程自动化:
#autoexpect -f auto ssh B
执行这个命令后,auexexpect工具会提示你输入登录密码,同时开始记录从此之后的所有操作,直到你退出A服务器,因此我从B上向A索取文件,再在B上执行所需的命令,再telnet到C上执行脚本,最后再从B上把文件发送给A,这些过程都将被记录到auto这个脚本文件中.
今后,我只需要在A上执行expect auto这个命令即可轻松的等待它自动化完成上述工作啦~:)
PS:
在A服务器上传输文件到B时可以使用scp filename username@B:/home/public/
这句话的意思是,将A服务器上当前目录下的filename文件传输到B服务器的/home/public目录下.
PS:不过autoexpect是通过明文保存服务器的登录密码的,有需要的人可以了解一下如果对密码加密.
