【问题标题】:supplying inputs to stdin programatically line by line?以编程方式逐行向标准输入提供输入?
【发布时间】:2011-04-03 11:27:32
【问题描述】:

我有一个测试程序,它会提示用户输入(stdin),并且根据输入,它会要求其他输入,这些输入也需要输入。

有没有办法让脚本完成所有这些工作?

【问题讨论】:

  • 完全有可能,但这个问题听起来太笼统了。
  • 我希望我可以否决评论。 +1 的问题 - 听起来像是验收测试的一个很好的用例。

标签: c++ c windows scripting command-line


【解决方案1】:

有一个名为expect 的程序几乎可以满足您的需求——您可以根据这些输出编写输入和预期输出以及响应的脚本,无论您需要简单还是复杂。另请参阅 wikipedia entry 以了解预期

【讨论】:

  • 补充:我找到了一本叫Exploring Expect的书,很不错。
【解决方案2】:

一般情况下,yesthereis

对于更具体的任务,您可以使用其他工具来完成更专业化和更适用于该特定任务的工作。

【讨论】:

  • 你能提供一个简单的例子吗?如果可能的话。
  • @Gollum:我需要一个具有特定输入和输出的特定问题陈述。你能提供吗?
  • 当然,如果我说 foo.exe 是要求 输入您的文件名: 现在我需要输入文件名,然后问我 输入测试类型 .....我想将所有这些答案放在一个文件或某个自动执行此操作的脚本中?但是我不想浪费你的时间,我也在学习期待。因此,如果您必须为此腾出额外的时间,那也没关系。
【解决方案3】:

我可能误解了,但是您是否有一个程序可以读取输入并对其进行处理,而您只是想知道如何自动为其提供一些测试输入?

对于给定的测试用例,您提供的输入是否必须取决于程序的输出,还是每次都相同?

如果给定测试的输入每次都相同,则只需将其放入文本文件并重定向标准输入以供您的程序从该文件中读取:

myprogram.exe < input.txt

如果每次输入都不同,对于同一个测试,那么这没有帮助。但是对于一个典型的简单测试,您只想对第一个问题回答“y”,对第二个问题回答“n”,对第三个问题回答“hello world”,或其他任何问题。

【讨论】:

  • 史蒂夫,这个程序是交互式的,有很多组合。无法手动输入所有内容,每次运行时也是如此。
猜你喜欢
  • 1970-01-01
  • 2019-12-05
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2014-04-09
  • 1970-01-01
相关资源
最近更新 更多