# open log file
log_file "log/vLog$tstr.log"
# open brief log file
set g_bLogFd [open "log/bLog.log" w]
# start testing
foreach tItem $tList {
switch $tItem {
"sys_001" { ;# test group sys_001
source snmp.exp
}
"cmd" { ;# exec cmd file
source tCmd.exp
}
"script" { ;# exec script file
if {$execScript == ""} {
puts "Please specify script name using -s option"
return -1
}
source $execScript
}
default {
puts "do you want to test \"$tItem\"\?"
}
}
}
close $g_bLogFd
在程序開始,通過source導入兩個文件,其中global.exp中主要存放了一些全局變量的定義,因為這些全局變量對每臺測試設備可能各不相同,所以把它們提取出來。commonLib.exp文件中存放著一些通用子程序,可供各測試程序調用。我們前面介紹過的login子程序,就放在此文件中。
接下來,分析命令行參數,首先提取出所有的選項參數,目前支持的命令行選項包括:
-u :此選項用來更改登錄的用戶名
-p :此選項用來更改登錄的密碼
-i :此選項用來更改te.net的IP地址
-c :此選項用來指明批處理文件的文件名,用法在后面描述
-s :此選項用來指明腳本文件的文件名,用法在后面描述
最后,命令行參數中所有非選項的部分,都被做為測試項,分別對這些測試項進行測試。
例如測試項test_001,會使用source命令調用snmp.exp腳本,進行snmp community方面的測試。
可以根據需要自行添加測試項目。
有兩個特別的測試項名稱,分別為cmd和script。
cmd測試項,會調用cmd.exp腳本,這個腳本在后面介紹,它的主要功能是執行一個文本文件里的所有命令。文本文件名由-c選項提供。
script測試項,它會調用source命令,執行$execScript腳本?梢允褂-s選項為$execScript變量賦值。
這個測試腳本提供了兩種日志,一種是詳細的日志(vLog*),包括了telnet的所有交互過程;另外一種是簡單的日志,只包含程序中使用errLog輸出的信息。日志文件被放在子目錄log中,其文件名中包含了腳本執行的時間,方便查找。
本腳本中使用dbgLog,以及以后將用到的errLog,都是定義在commonLib.exp文件中的子函數,代碼如下:
#************************************************
# debug output routine
#
# @PARAMS
# arg - variable length arguments
#************************************************
proc dbgLog arg {
global g_dbgFlag
if {$g_dbgFlag} {
puts $arg
}
}
#************************************************
# error output routine
#
# @PARAMS
# arg - variable length arguments
#************************************************
proc errLog arg {
global g_bLogFd
global g_dbgFlag
if {$g_dbgFlag} {
puts $arg
}
if { $g_bLogFd != 0 } {
puts $g_bLogFd $arg
}
文章來源于領測軟件測試網 http://www.kjueaiud.com/