2011-06-14 75 views
8

我正在設計一個Django項目,它的設計很漂亮。對於服務器端代碼,我們嘗試使用unittests來獲得體面的測試覆蓋率,稍高一些的代碼使用Django測試客戶端進行測試。我們有一個運行CI的Hudson/Jenkins服務器,其中的東西或多或少地沿着this article的線路設置,給我們測試通過和覆蓋統計。Django項目中的CI測試和覆蓋率測試

我想爲我們的JavaScript也有類似的東西。我希望能夠在單元測試級別進行測試,但也希望能夠在集成/驗收測試級別進行測試。後者需要一個完整的DOM JS環境和一個正在運行的django服務器。理想情況下,我想以某種方式使用Django測試客戶端,這樣我就可以按照我習慣於Django測試的方式設置serverstate。我也想運行CI服務器的所有測試,這需要某種無頭瀏覽器環境(服務器是沒有桌面環境的Ubuntu)。

我發現了一堆東西,但很多人覺得它不能在CI服務器上運行。與Django的集成通常也不是很好,並且不會爲服務器環境做好隔離測試。最後,我會理想地喜歡以相當好的速度工作,以儘可能快地保持我的測試/代碼循環。

是否有框架可以做我想要的或有人設法湊齊了一個接近的解決方案?是否有任何已建立的最佳做法,通常與Django結合進行良好的javascript測試(即是否有任何推薦的方法來自我缺少的django人)?

+0

「Cobble together」適合我。我已經使用jruby的celerity和zombie.js來做你正在問的問題,但從來沒有發現這些解決方案非常令人滿意。總有一些瀏覽器特定的東西無論如何都必須進行手動測試。 – 2011-06-14 13:59:38

+0

同樣的問題在這裏。我將在[django-jenkins](https://github.com/kmmbvnr/django-jenkins)中查看javascript的東西,看看它是否可以完成其中的一部分。 – marc1s 2011-11-07 15:10:15

回答

1

HtmlUNIT看起來像它可能會做一些你需要的東西(例如一個支持JavaScript的無頭瀏覽器)。它也不應該是很難用'runserver'風格管理命令來解決這個問題,該命令也會在退出時丟棄覆蓋範圍。

http://htmlunit.sourceforge.net/

+0

+1方向,但他們的bugtracker內容有點可怕:http://sourceforge.net/tracker/?group_id=47038&atid=448266 – 2011-08-23 19:44:29

0

你可能想嘗試Ghost.pyPhantom.JS Python實現。我爲即將推出的LiveServerTestCase構建的django提供了一個擴展。

它依賴於PyQt4,因此您必須將其複製到您的項目的virtualenv。