【发布时间】:2020-01-13 19:55:40
【问题描述】:
如何从第一个期望脚本在 spawnid 上运行一堆期望脚本
以下是详细信息: 我首先期望脚本会生成一个名为 openapp 的应用程序。 现在我想运行测试(用期望脚本编写 - abc),它将对生成的应用程序 ID 进行不同的验证
#!/usr/bin/expect -f
source home/tests/library.tcl
set openapp [runapp]
eval spawn $openapp
set id $spawn_id
login
puts [exec home/tests/testsuite/abc $id]
expect eof
#!/usr/bin/expect -f
sourcehome/tests/library.tcl
puts 2ndscript
set bbb [lindex $argv 0]
puts $bbb
send -i $bbb "t\r"
expect eof
这是我得到的结果:
exp5 第二稿 经验5 找不到名为“exp5”的频道 在执行时 "发送 -i $bbb "t\r"" (文件“/home/tests/testsuite/abc”第 6 行) 在执行时 “执行主页/测试/测试套件/abc $id” 从内部调用 “将 [exec home/tests/testsuite/abc $id]” (文件“/home/tests/testsuites/xyz”第 7 行)
我无法从其他脚本对 spawnid 运行期望命令
【问题讨论】:
-
在
expect eof之后的第一个脚本中,生成的进程已经死亡,因此无法继续与其交互。 -
即使你没有
expect eof,当期望脚本完成时,生成的进程也会被杀死(通常被SIGHUP)。您不能将 spawnid 从一个脚本传递到另一个脚本。 -
感谢 pynexj,所以除了将 spawnid 从一个脚本传递到另一个脚本之外,还有其他方法可以在一个期望脚本中生成应用程序后调用其他期望脚本。所以基本上,我必须生成一个应用程序并登录,然后我想运行一些测试。因此,为了便于维护,这些测试必须在不同的文件中,而不是在我们生成应用程序的同一个文件中。