【问题标题】:How to apply default to all expect commands?如何将默认值应用于所有期望命令?
【发布时间】:2021-04-18 12:50:06
【问题描述】:

使用 expect 编写 CLI 单元测试,并希望抽象出以下 default 块,因为它适用于所有预期块。

default {
  test_failed
}

例子:

#!/usr/bin/expect

source ./test.exp

set passphrase "asdasd"
set secret "foo\nbar"

test_label "Should backup secret using Shamir Secret Sharing"

spawn qr-backup.sh --shamir-secret-sharing

expect {
  default {
    test_failed
  }
  -re {Format USB flash drive \(y or n\)\?} {
    sleep 0.1
    send "n\r"
  }
}

expect {
  default {
    test_failed
  }
  -re {\[sudo\] password for pi:} {
    sleep 0.1
    send "$env(password)\r"
  }
}

【问题讨论】:

  • 听起来您正在寻找expect_before(或expect_after)命令。
  • 谢谢@SchelteBron。正是我想要的。 ??????

标签: tcl expect


【解决方案1】:

这正是expect_beforeexpect_after 命令的作用。在这种情况下,您使用哪一个并不重要:

#!/usr/bin/expect

spawn qr-backup.sh --shamir-secret-sharing

expect_after {
    default {
        test_failed
    }
}

expect {
    -ex {Format USB flash drive (y or n)? } {
        send "n\r"
    }
}

expect {
    -ex {[sudo] password for pi: } {
        send "$env(password)\r"
    }
}

【讨论】:

    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 2020-12-30
    • 2017-10-11
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    相关资源
    最近更新 更多