TCL/EXPECT自动化测试脚本实例

发表于:2009-9-22 11:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:pulingwang    来源:51Testing博客

  我的自动化测试脚本运行在debian linux下,使用/usr/bin/expect进行解释执行。为了简化处理,把一些常用的功能编写成函数,放在commonLib.exp文件中,其它脚本文件可以使用source commonLib.exp命令引用这些函数。

  下面的函数完成telenet到目标机器并login。从其实现上大家可以看到tcl/expect编写测试脚本的简洁。

  这个函数带有三个参数,分别是目标机器的IP地址ipaddr,登录用户名user和登录密码,telenet的端口号采用默认的23端口。

  函数中使用了三个全局变量,g_prompt,g_usrPrompt和g_pwdPrompt,分别表示登录后的命令提示符,提示用户名输入的提示符,以及提示密码输入的提示符,这三个全局变量定义在global.exp中。之所以采用全局变量,是因为这些值使用比较广泛,但在不同设备中都不相同。使用全局变量可以方便修改。

  代码如下:

#************************************************ 全部用#在开头标识,表示#不可执行部分
# telnet login routine
#
# @PARAMS                               参数:
# ipaddr - remote device ip address
# user   - user name to login in
# passwd - login password
#
# @RETURN
# spawn_id if login success, otherwise 0
#************************************************
proc login {ipaddr user passwd}{

proc add {x y } {expr $x+$y}

  proc命令的第一个参数是你要定义的过程的名字,第二个参数是过程的参数列表,参数之间用空格隔开,第三个参数是一个TCL脚本,代表过程体。

  proc生成一个新的命令,可以象固有命令一样调用:

    global g_prompt g_usrPrompt g_pwdPrompt
全局变量:分别表示登录后的命令提示符,提示用户名输入的提示符,以及提示密码输入的提示符,
    spawn telnet $ipaddr   telnet 方式登陆到目标ip地址上
    expect{
        "$g_usrPrompt" {       提示输入用户名
            exp_send "$user\r\n" 发送用户名
            exp_continue         程序继续
        }
        "$g_pwdPrompt" {        提示密码输入的提示符
            exp_send "$passwd\r\n"发送密码
            exp_continue          程序继续
        }
        -ex "$g_prompt" {            登录后的命令提示符 exec 命令用于显式地执行外部命令
            dbgLog "Login Successful\n"显示日志信息,登陆成功
            return $spawn_id          
        }
        timeout {                    超时处理
            send_user "timeout"       发送超时信息
            return 0                 习惯上 return (0); 表示程序运行正常,别的值表示不正常。在定义过程时,你可以利用return命令在任何地方返回你想要的值。 return命令迅速中断过程,并把它的参数作为过程的结果。
        }
   }
}

版权声明:本文出自pulingwang的51Testing软件测试博客:http://www.51testing.com/?238195

原创作品,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号