unit-testing - 期望将外部程序的退出命令识别为自己的
问题描述
我是 Expect 的新手,正在尝试制作一个测试程序。
在深入研究问题之前,以下是代码。
#!/usr/bin/env expect
if { [llength $argv] != 2 } {
puts "expect tester.exp <executable> <test-case>"
exit 1
}
set executable [lindex $argv 0]
set TEST [lindex $argv 1]
set test_cmds [split $TEST "\n"]
spawn ./$executable
set timeout 0.05
foreach test_cmd $test_cmds {
expect "."
send "$test_cmd\r"
sleep 0.05
}
send_user "\r"
exit 0
问题是我试图测试的可执行文件本身有一个“退出”命令。
在下面的代码中,当 $test_cmd 变为“exit”时,我想它会以标准输入方式退出到可执行文件。
但是,似乎“退出”命令导致 Expect 退出,这会返回以下错误。
如果我不包含“退出”命令,则不会出现此类错误。
有没有办法只对我的可执行文件使用“退出”而不是期望?
["add" "remove" "select" "show" "clone" "import" "exit"]
splite: exit
send: spawn id exp4 not open
while executing
"send "$test_cmd\r""
("foreach" body line 3)
invoked from within
"foreach test_cmd $test_cmds {
expect "."
send "$test_cmd\r"
sleep 0.05
}"
(file "tester.exp" line 18)
谢谢你。
解决方案
推荐阅读
- android - 尝试在我的应用程序中共享时,分支通用深度提供空的引用参数
- git - git push 替换了历史
- php - 高级自定义字段显示未选中的选项
- ios - iOS 中的 Flutte google_sign_in 问题
- python - 在 xarray 数据框中过滤 2 坐标索引
- rust - 如何在 Rust 中实现后增量宏
- performance - 如何阅读 Chrome 开发工具性能分析 --> 网络选项卡?
- flask - 使用 Flask,Pymongo 从 mongo 集群访问集合中的数据项时出错
- asp.net-identity - Blazor AuthenticationStateProvider
- api - 没有来自 Wikipedia API 搜索的内容