從今天開始,陸續把我所寫的一些自動測試腳本貼上來,希望對初學者有所幫助。由于目前沒有找好合適的服務器存放代碼,所以代碼先貼在blog的正文中,以后再提供完整的代碼下載。
我的自動化測試腳本運行在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} {
global g_prompt g_usrPrompt g_pwdPrompt
spawn telnet $ipaddr
expect {
"$g_usrPrompt" {
exp_send "$user\r\n"
exp_continue
}
"$g_pwdPrompt" {
exp_send "$passwd\r\n"
exp_continue
}
-ex "$g_prompt" {
dbgLog "Login Successful\n"
return $spawn_id
}
timeout {
send_user "timeout"
return 0
}
}
文章來源于領測軟件測試網 http://www.kjueaiud.com/