在CLI程序中自动执行命令

时间:2013-05-25 17:37:59

标签: ruby testing

我有一个Ruby应用程序,它在命令行上采用了多个用户输入步骤,即:

Please select a client number: 1
Thank you for selecting 1. Please select a portfolio number: 3.
You are in portfolio 3. Please select a stock option: AAPL.
You have chosen AAPL. What would you like to do with it? b
How many shares would you like to buy? 5
You have purchased 5 shares of Apple stock. What would you like to do next? 

不是那么荒谬,但你明白了。我希望能够测试我的基本“UI”,而不必每次都为每个角落案例进行测试。是否有一个工具,一种用于命令行的Selenium,可以实现这一目标?

3 个答案:

答案 0 :(得分:1)

根据问题的堰塞,围绕非交互式输入设计应用程序可能会有所帮助,并使用交互性作为后备。例如,您可以允许--client--portfolio--stock-symbol等选项。您的测试/自动化脚本将使用这些(并具有显着可读性的优点)。默认情况下,您可以要求用户提供交互式输入。

现在,为了测试所说的交互式输入,期望会起作用,但如果你正在阅读标准输入并且问题是确定性的,你可以只创建一个文本文件并将其输入。例如:

> cat input.txt
1
3
AAPL
b
5
> ./my_app < input.txt
> ./my_app --client 1 --portfolio 3 --stock-symbol AAPL --buy 5

答案 1 :(得分:0)

Expect可以做到。它不是一个Ruby解决方案,但可能会有一些“测试包装”使它更容易。

答案 2 :(得分:0)

您尚未提及您的平台。在* nix平台中,您可以考虑使用expect命令。 Here是一些例子。

否则,您可以修改Ruby脚本以接受命令行参数。这是一种更好,更简单的方式。