2013-12-10 44 views
5

我有一個非常大的Python包,我寫了大約3500條語句,並帶有一個健壯的單元和驗收測試套件。我對代碼本身的質量非常有信心,但是我對包的用戶順利安裝過程感到不安,因爲我不知道如何在適當的隔離環境中可靠地測試安裝,缺少類似的東西保留一臺備用機器並在每次測試運行時用新的OS安裝重新映像。如何測試我的包的setup.py?

我懷疑以正確的方式使用virtualenv可能會爲測試安裝提供適當的測試夾具,但是在擴展的網絡搜索發現沒有有用的指導之後。

如何在我的開發機器上有效測試我的setup.py和其他安裝位?

+2

爲什麼不嘗試在virtualenv中安裝'python setup.py install'? –

+0

我如何知道不使用我的開發機器上不存在的文件或其他依賴項,這些文件或其他依賴項不在最終用戶的環境中? – scanny

+0

如果你覺得你不能相信那個virtualenv做你想做的事,你可以嘗試一個虛擬機。抓住VirtualBox安裝並拍攝快照,然後運行setup.py並恢復快照以恢復到清理狀態。虛擬機也可用於其他許多事情。 :)是的,這是爲了矯枉過正,但並不像單獨的物理機器那樣矯枉過正。 –

回答

3

如果你喜歡的工具(我做)檢查fabric和一套布藝的任務,我在我所有的項目記載:

如:circuits' fabfile

這應該只是工作任何Python項目,並利用:

  • 獅身人面像
  • py.test /毒性
  • 的virtualenv

一些基本的工作流程:

fab build # build the package in non-development mode 
fab develop # build the package in development mode 
fab docs  # build/regenerate the documentation 
fab test  # run tie unit test suite 
fab release # run through a tested release cycle 

類型:fab -l的命令列表和fab help:<name>對任何命令的幫助。

更新:最近我們增加fab docker命令與Docker

fab docker:build # Build a Docker image 
fab docker:publish # Publish Docker image to the Docker Hub 
fab docker:run  # Run a new Docker container 
+0

嗯,這看起來很有趣。所以你保持一個單獨的機器運行在某處作爲部署測試夾具?這實際上讓人想起了持續集成(CI)環境作爲一種可能的選擇。也許我應該考慮把這個軟件包放在Travis CI上。我剛纔簡單地考慮了一下,但沒有真正研究過它。 – scanny

+0

不,織物任務僅限本地。但是,我將所有項目都推送到drono.io和shiningpanda.com CI服務 - 但是,此ia由BitBucket的存儲庫掛鉤自動處理。 –

+0

嗯,這很有趣。那麼你的本地機器上的哪個地方你確實在做建築?你如何獲得隔離,並增加你對構建腳本/ setup.py的信心?我想我的另一個問題是,爲什麼你需要使用結構,而不是僅僅是一個bash腳本,如果沒有涉及SSH連接?或者在那裏? – scanny

2

工作如果你真的代替隔離只是做python setup.py install在virtualenv中。然後使用virtualbox並在其中安裝一些免費的linux操作系統。在安裝完成後拍攝機器快照,以便隨時輕鬆恢復到出發點,並在那裏嘗試python setup.py install

相關問題