TCL/EXPECT自动化测试脚本实例四 --- 批命令执行

在测试过程中,在具体测试某一个功能点时,往往需要为此进行大量的配置。为了简化测试过程,我们可以把所有的配置命令放在一个文本文件中,然后使用测试脚本来执行这些命令。这样就不需要再手工进行配置了,费时费力。
基于如上考虑,编写了下面的脚本tCmd.exp。这个脚本被我们前面介绍过的test.exp脚本调用。

# $Id$

# This file is used to execute specific commands list in a file

proc execCmdFile {cmdFile} {
    global g_dbgFlag g_prompt

    # enable debug
    set g_dbgFlag 1

    # login
    set spawn_id [login $g_devip $g_user $g_passwd]
    if {$spawn_id == 0} {
        errLog "login $g_devip failed"
        return 0
    }

    # open cmdFile
    set cmdFd [open $cmdFile r]

    while true {
        # get a line
        if {![getLine $cmdFd line]} {
            dbgLog "reached eof"
            break
        }

        # split the line
        set ln [split $line ","]
        set cmd [string trim [lindex $ln 0]]
        set out [string trim [lindex $ln 1]]

        if {$cmd == ""} continue
        if {$out == ""} set out $g_prompt

        # send cmd line
        exp_send "$cmd/n"
        dbgLog "send $cmd"

        # expect output
        dbgLog "expect $out"
        expect {
            timeout {
                errLog "TIMEOUT: while exec /"$cmd/""
                continue
            }
            -ex "$out" {
                continue
            }
        } ;# end expect
    }

    # close cmdFile
    close $cmdFd
}

# if no cmdFile, use default
if {$cmdFile == ""} {
    set cmdFile "cmdFile.txt"
}

execCmdFile $cmdFile

有了这个脚本,我们可以使用"./test.exp -cinterface.txt cmd"来执行interface.txt中的命令。

你可能感兴趣的:(TCL/expect)