Automation
如何檢測期望腳本中的超時
考慮一個產生命令並等待一系列事件的期望腳本。我們用它來測試軟體。我試圖在超時時始終從腳本中獲取失敗返回值。
spawn some-command set timeout 10 expect "First message" expect "Other message"
即使超時命中,此腳本也將始終返回 0(成功)。處理超時的唯一方法是將每個期望語句轉換為:
expect { timeout { exit 1 } eof { exit 1 } "First message" }
但這很快就會變得笨拙。是否有任何簡化?是否有一個期望選項會導致早期超時/ eof 致命錯誤?
評論meuh 的答案,
expect_before
採用與 相同的參數expect
,所以你可以這樣寫:expect_before { timeout { puts "timeout"; exit 2 } eof { puts "eof"; exit 1 } } # ... expect "First message"
您可以設置
expect_before
命令。這將在您expect
稍後在腳本中使用時執行。例如proc abort { } { send_user "Timeout!" ; exit 2 } set timeout 5 spawn ssh myhost expect_before timeout abort expect "assword: " send "abc\r" expect "$ " send "sleep 99\r" expect "$ "