2013-05-25 72 views
1

我有一個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? 

並非如此,可笑的,但你的想法。我希望能夠測試我基本的「用戶界面」,而不必每次都爲每個角落案例進行檢查。有沒有一種工具,類似命令行的Selenium,可以實現這一點?

回答

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 
0

Expect可以做到這一點。這不是一個Ruby解決方案,但可能會有一些「測試包裝器」讓它更容易。

0

你還沒有提到你的平臺。在* nix平臺上,您可以考慮使用expect命令。 Here是一些開始的例子。

否則,您可以修改您的Ruby腳本以接受命令行參數。這是一個更好,更簡單的方法。