2011-08-11 79 views
3

我有一組命令行應用程序,其測試我想自動化。這是爲了測試IaaS雲設置,因此測試將調用啓動新的虛擬機實例(例如euca-run-instances),然後確保它們可以通過ssh登錄,甚至可以在遠程計算機上運行一些簡單的應用程序。自動化命令行應用程序的集成測試

是否有任何框架設計來做這種測試?我知道有框架可以使運行單元測試變得更容易,而且我知道像(p)這樣的東西可以與諸如ssh之類的東西進行交互,但我不知道處於這兩個世界交匯處的工具。

+0

標籤 '殼' 不明確,你的意思做這在Windows或的Linux/Unix。爲操作系統和外殼名稱添加標籤以更多地關注您的問題。 – shellter

+0

添加標籤。忘記了不是每個人都住在Unix領域。 –

+1

爲什麼期望不能滿足您的需求?我認爲,使用exec,spawn和friends,你擁有所需的所有命令行功能? – thiton

回答

0

這裏是我的提示: 您可以使用中央主機並運行帶有ssh密鑰文件授權的「ssh user @ host cmd」 因此,您可以更輕鬆地控制多個主機。

2

您需要調用的所有東西都是面向命令行的?沒有比bash更進一步。恐怕沒有圖書館可以使它比現在更普遍。

你甚至可以做遠程測試:

$ ssh [email protected] /bin/false ; echo $? 
1 

$ ssh [email protected] /bin/true ; echo $? 
0 

這意味着你可以編寫一個腳本,上傳到服務器上,遠程執行它,使用它的退出代碼來確定是否成功(0)或失敗(1 )。

當然,這並不能解決你所有的問題。確切的測試策略取決於你的情況。分工你的工作,讓你的生活更輕鬆。

  • VM設置
  • VM測試
  • VM部署(服務器具體的東西加到這裏)
  • 部署的VM測試
  • 部署的VM清理(刪除測試的東西)

有一個看看shunit,爲自己節省編寫自己的單元測試框架的麻煩。雖然我不能真正展開shunit。我寫了自己的工具後才發現它。

1

我已經使用pexpect和pyhton的unittest測試了LDAP系統與客戶端服務器的集成,

我們圍繞pexepect的子pxssh編寫了一個包裝類,它明確地圍繞着ssh handeling。我們將函數寫入pxssh類,它不僅可以捕獲輸出,還可以返回$的值?命令結束後。

當我們轉向單元測試時,這給了我們靈活性。測試,然後能夠寫入,以便我們可以測試輸出條件甚至是返回值。

我們在那裏能夠單元測試:

  • 成功登錄
  • 預計將失敗的登錄
  • 預期的文件夾
  • 預期的文件
  • 存在登錄橫幅

作爲這項工作的一個後果,我們改編了pxssh cla ss重新IP /解析器超過1000個Linux主機,這使得我們的建設移動更容易。對不起,我不能分享工作擁有它的代碼更多細節(雖然我希望讓他們釋放它)

0

Cram似乎有這個功能。給予CLI使用

0

Cli-unit測試爲預期產出和測試文件都在降價,所以你可以把它們作爲文檔(例如,在你的自述文件)

例如README.md

### test: echo foo should output "foo" 
#### when: 
    echo foo 
#### then: 
    foo 

然後運行它:

cli-unitw.sh README.md 
Pass (1/1 tests successful) 

(閱讀更多關於CLI-單元here