Pydev 的覆蓋率測試python coverage以及其他使用

來源:互聯網
上載者:User

1.help--->SoftWare Updates--->Find and Install...。

2.選擇 Search for new features for install,然後單擊 Next。在顯示的視窗中,選擇 new remote site。此時,會彈出一個對話方塊,要求輸入新的更新網站的名稱和連結。這裡,名稱項輸入 PyDev,當然,您也可以輸入其他的名稱;連結裡輸入http://www.fabioz.com/pydev/updates,也可以填http://pydev.sourceforge.net/updates。然後,單擊 Ok。

這樣,一個新的 PyDev 的網站就建好了,選擇該網站,然後 Finish。接下來,Eclipse 的Update Manager 將會在剛才輸入的網站中搜尋安裝包,選中搜尋出的結果 PyDev,並單擊 Next。

3.

  1. 閱讀許可證條款,如果接受,則可單擊 Next。進入安裝直接選取介面,使用預設設定,然後 Finish。
  1. Eclipse Update Manager 將下載 PyDev,您可以從 Eclipse 工作列中看到下載的進度。下載完後,顯示一個需要您確認是否安裝的介面,單擊 Install All 便開始安裝了。

安裝完後,需要重啟 Eclipse 使安裝生效。

驗證是否成功安裝 PyDev

如何才能驗證 Eclipse Update Manager 是否已經成功安裝了所需的 PyDev 外掛程式了呢?

選擇 Help->About Eclipse SDK->Plug-in Details,將會出現 About Eclipse SDK Plug-ins 視窗,該視窗裡列出了所有已經安裝了的 Eclipse 外掛程式。檢查一下在 Plug-in Id 一欄中是否至少有五個以上分別以 com.python.pydev 和 org.python.pydev 開頭的外掛程式。如果是,那麼 PyDev已經被成功安裝,否則,安裝出了一些問題,需要根據具體問題來做具體的分析。

圖 3. 驗證 PyDev 外掛程式

配置 PyDev

安裝好 PyDev 之後,需要配置 Python/Jython 解譯器,配置過程很簡單。

在 Eclipse 功能表列中,選擇 Window > Preferences > Pydev > Interpreter - (Python/Jython),在這裡配置 Python/Jython 解譯器,下面以 Python 為例介紹如何配置。

首先需要添加已安裝的解譯器。這裡,Python 安裝在 C:\Python25 路徑下。單擊 New,選擇 Python 解譯器 python.exe,開啟後顯示出一個包含很多複選框的視窗,選擇需要加入系統 PYTHONPATH 的路徑,單擊 Ok。

圖 4. 配置 PyDev

接下來,檢查一下配置的結果是否正確。

在 System PYTHONPATH 裡,檢查是否包含配置過程中加入的那些路徑。這裡列出了所有的系統所需的庫檔案夾。

另外,在 Forced builtin libs 裡,列出了 Python 的內建庫。對於 Python 而言,這樣的內建庫大約有50個,而對於 Jython 來說,則有30個左右。

這樣,Python 解譯器就配置好了。




回頁首

PyDev Package Explorer

建立項目

在開展工作之前,需要建立一個新的項目。在 Eclipse 功能表列中,選擇 File > New > Project > Pydev > Pydev Project,單擊 Next。

圖 5. 建立 Pydev 項目

這時,顯示出 Pydev Project 視窗,輸入項目名稱、選擇工作路徑、選擇 Python 解譯器的版本類型並選中複選框,然後單擊 Next,進入關聯項目的視窗,如果不需要關聯其他項目,則可以直接單擊 Finish,完成項目的建立。

建立 Python 包和模組

接下來,在剛建立的項目中開始建立 Python 包和模組。

  1. 進入 Pydev 透視圖,在 Python Package Explorer 中,按右鍵 src,選擇 New->Pydev Package,輸入 Package 名稱並單擊 Finish,Python 包就建立好了,此時,自動產生__init__.py 檔案,該檔案不包含任何內容。

注意:如果在建立項目的時候沒有選中“Create default src folder and add it to the pythonpath”複選框,則需要通過 File > New > Other > Source Folder 手動建立一個原始碼檔案夾。

  1. 建立完 Pydev Package 後,按右鍵建立的包,選擇 New->Pydev Module,輸入模組名稱,單擊 Finish。這樣,Python 模組就建成了。

編輯來源程式

對於來源程式的一些基本編輯方法,就不做介紹了。下面介紹幾點 Pydev 提供的非常實用的編輯功能。

  1. 語法錯誤提示

Python 開發人員在建立修改程式的過程中,如果能及時發現編輯過程中出現的語法錯誤,無疑對整個項目開發的品質和進展都是非常重要的。在 Python 透視圖中,Pydev Package Explorer 中列出了項目的原始碼,雙擊其中某一個 Python 檔案,如果該檔案包含語法錯誤,錯誤會以很醒目的方式展現出來。

圖 6. Pydev 檔案語法錯誤提示

如果想把整個項目中所有包含語法錯誤的檔案顯示出來,可以從 Python 透視圖自由切換到 Java 透視圖。在 Java Package 裡,一個個醒目的小紅叉標記了所有包含語法錯誤的 Python檔案。

圖 7. Pydev 項目語法錯誤提示

  1. 原始碼編輯助手 (Content Assistents)

原始碼編輯助手 (Content Assistents,以下簡稱 CA),顧名思義,即用於協助開發人員編輯來源程式,它提供了諸多方便實用的功能,引導開發人員進行高效快速的項目開發。

通過快速鍵 Ctrl+1 可以啟用 CA,它支援的功能如下:

PyDev

  1. Move import to global scope
  2. Create docstring
  3. Assign result to new local variable (or field)
  4. Assign parameters to attributes
  5. Surround code with try..except or try..finally

PyDev Extensions

  1. Make import for undefined token
  2. Ignore error
  3. Don't analyze module

在安裝 PyDev 時,PyDev 和 PyDev Extensions 包都已安裝,所以 CA 的這幾大功能現在都支援。首先,先介紹如何使用 PyDev 包含的 CA 功能。

  • PyDev 的 CA 功能
  1. Move import to global scope

以如下代碼為例,將游標移至 import sys 後,啟動快速鍵 Ctrl+1 啟用 CA,”Move import to global scope” 出現在標籤中,按 Enter 應用此功能。如果不想應用該功能,可以按 Esc 鍵取消。

#!/usr/bin/python –usys.path.append(“./VirtualFS”)import sys

應用該功能後,import sys 被成功移至全域範圍內,消除了之前的錯誤。改變後的代碼如下。

#!/usr/bin/python –uimport syssys.path.append(“./VirtualFS”)
  1. Create docstring

Create docstring 功能可以自動為函數添加參數註解。將游標移至如下程式碼,啟動快速鍵Ctrl+1 啟用 CA,標籤欄中出現 ”Make docstring”。

def __init__(self, dbUser, dbPswd, dbHost):

按 Enter 應用該功能後,自動為該函數添加了參數註解。

def __init__(self, dbUser, dbPswd, dbHost):  '''    @param virtualOperator:  @param database:  @param hostname:  @param workDir: '''
  1. Assign result to new local variable (or field)

CA 還提供一種功能能夠將函數返回結果賦給新的內部變數。以函數 callMethod 為例,將游標移至 a.callMethod() 行啟用 CA。

def method (self, a): a.callMethod()

選擇 ”Assign to field(self, callMethod)” 或者 ”Assign to local(callMethod)”,可以將a.callMethod() 結果賦給新的內部變數 self.callMethod,改變後的代碼如下。

def method (self, a): self.callMethod = a.callMethod()
  1. Assign parameters to attributes

在程式編輯過程中,如果需要把函數參數賦給變數,可以使用 CA 的 Assign parameters to attributes 功能自動完成這樣的需求。將游標移至函數 m1 所在行,啟用 CA。

class Foo(object): Def m1(self, a, b):

在標籤欄中選擇 ”Assign parameters to attributes”,自動產生兩行代碼將參數 a,b 賦給同名變數。

class Foo(object): def m1(self, a, b):  self.a = a  self.b = b
  1. Surround code with try..except or try..finally

對可能產生異常的代碼,要進行異常捕獲,通常使用 try..except 或者 try..finally 語句來捕獲異常。選中一段代碼 print usage,啟用 CA 的 ” Surround code with try..except or try..finally”功能,可以自動對 print usage 進行異常捕獲。

import sysdef method (self, usage):   try:       print usage   except:       raise

下面,再介紹 PyDev Extensions 包含的 CA 功能是如何被運用的。

  • PyDev Extension 的 CA 功能
  1. Make import for undefined token

以如下一段代碼為例,xmlreader 未定義,文法分析出錯。

class Test: def method(self):      xmlreader

將滑鼠移至出錯行,啟動快速鍵 Ctrl+1 啟用 CA,選擇標籤欄中的 ”Import xmlreader(xml.sax)”,自動產生一行代碼 from xml.sax import xmlreader,語法錯誤消除。

from xml.sax import xmlreader  class Test: def method(self):      xmlreader
  1. Ignore error

仍以上述代碼為例,由於 xmlreader 沒有被定義,包含語法錯誤,在這一行啟用 CA,選擇 ”UndefinedVariable”,語法錯誤被忽略,xmlreader 後自動產生一行注釋標明 ”#@UndefinedVariable”。

class Test: def method(self):      xmlreader #@UndefinedVariable
  1. Don't analyze module

文法分析器可以協助顯示包含語法錯誤的代碼,但在程式編輯過程中,有時候需要刻意取消對程式的文法分析,CA 的 Don't analyze module 提供了這樣的功能。

將游標移至程式第一行,啟用 CA,選擇 ”@PydevCodeAnalysisIgnore”,自動產生一行代碼 ”#@ PydevCodeAnalysisIgnore”,忽略對程式體的文法分析。

#@PydevCodeAnalysisIgnore   class Test: def method(self):            xmlreader
  1. Quick Outline

對特定的 Python 檔案,Pydev Extensions 提供的 Quick Outline 能最簡單快捷地擷取該檔案的組織圖,並能在該檔案中方便地查詢定位所需資訊。

在 Pydev 透視圖中,選擇 Source -> Show Quick Outline,或者使用快速鍵 Ctrl+O 啟動該功能。

Python 檔案的類、函數等組織架構便以樹狀形式被形象地展現出來。同時,Filter 提供了查詢定位的功能,可以方便地查詢所需資訊並定位到相應的程式碼片段。

圖 8. Quick Outline

  1. Globals Browser

Globals Browser 是 Pydev Extensions 提供的另外一種強大的查詢定位功能。它可以查詢定位整個工程內的一些定義和屬性,包括:

  1.  

    • 類定義
    • 方法定義
    • 全域變數
    • 類以及執行個體屬性

通過三種方式可以啟動該功能。

  • 在 Pydev 透視圖中,從功能表列中選擇 Pydev -> Globals Browser。

圖 9. 功能表列啟動 Globals Browser

  • 在Pydev 透視圖中,工具列有如下的一個小表徵圖,滑鼠移至該表徵圖上方,顯示 ”Pydev: Globals Browser” 標註。點擊該表徵圖按鈕,可以啟動 Globals Browser 功能。

圖 10. 工具列啟動 Globals Browser

  • 通過快速鍵 Ctrl + Shift + T,可以快速啟動 Globals Browser 功能。

在 Filter 中輸入所要查詢的定義、變數或者屬性,Globals Browser 可以快速地定位到相應的程式碼片段。

圖 11. Globals Browser

  1. Hierarchy View

當某個 python 檔案包含多個類時,如何才能簡單直觀地瞭解各個類之間的依存關係?Hierarchy View 提供了這樣的功能,它能將多個類之間的層次關係以樹狀結構直觀地顯示出來。

以一段 Python 代碼為例,定義了 Super1, Super2, ToAnalyze 和 Sub1 四個類。在 Pydev透視圖中,選擇 Windows -> Show View -> Other,在彈出的 Show View 視窗中,選擇 Pydev -> Hierarchy View。按快速鍵 F4 啟用 Hierarchy View,可以看到樹狀圖中顯示出了類間的層次關係。

圖 12. 在 Hierarchy View 中顯示類的層次關係

Hierarchy View 還支援以下四個功能:

  • 在層次圖中,用按一下滑鼠某個類,圖下方即顯示出該類的方法。
  • 如果雙擊某個類、方法或者屬性,則會調出來源程式,進入對該類、方法或者屬性的編輯狀態。
  • 在 Hierarchy View 中,按住滑鼠右鍵,並相左或向右移動滑鼠,層次圖則會相應地縮小或放大。
  • 在 Hierarchy View 中,按住滑鼠左鍵移動滑鼠,層次圖則會被隨意拖動到相應的位置。


回頁首

運行和調試

運行程式

要運行 Python 來源程式,有兩種方法可供選擇。下面以一段代碼 example.py 為例介紹這兩種運行方式。

  • 在 Pydev Package Explorer 中雙擊 example.py,選擇 Run -> Run As -> Python Run。程式example.py 立即被運行,在控制台 Console 裡顯示出程式的執行結果。

圖 13. Python 程式及運行結果

  • 在 Pydev Package Explorer 中,用滑鼠右鍵單擊 example.py,在彈出的功能表列中選擇 Run As -> Python Run。同樣,example.py 被執行,Console 中顯示程式的執行結果。

以上兩種方式是運行來源程式的基本方法。Pydev 還提供一種特有的來源程式運行功能 Run As Python Coverage,該功能不僅能顯示出程式的運行結果,而且能將程式運行過程中代碼的覆蓋率顯示出來。

要查看代碼的覆蓋率,首先需要開啟 Code Coverage Results View。在 Pydev 透視圖中,選擇 Windows -> Show View -> Code Coverage Results View。在彈出視圖的左欄中,可以看到三個按鈕,”Choose dir!”, “Clear coverage information!” 和 ”Refresh Coverage infomation”。

圖 14. Code Coverage Results View

用滑鼠左鍵單擊 ”Choose dir!”,在彈出的 Folder Selection 視窗中選擇需要啟動並執行程式所在的包,單擊 Ok。這樣,這個包中所有的來源程式便顯示在左欄中。

接下來,仍以 example.py 為例,看看 Run As Python Coverage 功能展現出的結果。選擇Run As -> Python Coverage,控制台 Console 中顯示出了程式的運行結果。切換到剛才開啟的 Code Coverage Results View 視圖,單擊左欄中的 example.py。

圖 15. 在 Code Coverage Results View 中顯示程式碼涵蓋範圍

代碼運行過程中的覆蓋情況很清楚地顯示在右欄中。

雙擊左欄中的 example.py,沒有覆蓋到的代碼便在編輯器中以醒目的錯誤標誌被標註出來。

圖 16. 以錯誤標誌顯示沒有被覆蓋到的代碼

如果關閉 Code Coverage Results View 視圖,代碼的覆蓋資訊並沒有丟失,重新開啟該視圖同樣可以顯示出這些資訊。只有通過單擊左欄的 “Clear coverage information!” 按鈕,才可以清除程式運行後得到的這些覆蓋資訊。

偵錯工具

調試是程式開發過程中必不可少的,熟練掌握調試技能是開發人員進行高效開發的前提和基礎。下面仍以 example.py 為例,介紹如何使用 Pydev 的調試功能。

調試需從添加斷點開始,有三種方式可以設定斷點。

  • 雙擊編輯器中尺規欄左邊灰白的空白欄,在某行添加斷點。

圖 17. 雙擊尺規欄左邊灰白的空白欄添加斷點

  • 滑鼠右鍵單擊尺規欄,在彈出的功能表列中選擇 ”Add Breakpoint” 添加斷點。

圖 18. 按右鍵尺規欄添加斷點

  • 將滑鼠移至需要添加斷點的程式碼,使用快速鍵 Ctrl+F10,在彈出的功能表列中選擇 ”Add Breakpoint” 添加斷點。

添加好斷點後,選擇 Debug As -> Python Run 啟動調試器,彈出一個對話方塊,詢問是否切換到調試器透視圖,單擊 Yes,即顯示偵錯模式。

圖 19. 調試器透視圖

程式調試過程中,常用的幾個快速鍵如下:

  • 單步跳入 Step Into: F5
  • 單步跳過 Step Over: F6
  • 單步返回 Step Return: F7
  • 重新開始 Resume: F8

在控制台 Console 中,顯示出斷點之前代碼的執行結果。如果要查看某個變數的值,以變數 a 為例,可以手動在控制台中鍵入一行代碼 ”print ‘a is:’, a”,再連續按兩次 Enter 鍵,即顯示出變數的值。

圖 20. 控制台顯示變數值

在偵錯模式下,要查看錶達式的值,選中後單擊滑鼠右鍵,選擇 Watch。彈出 Expression面板,顯示出了相應的變數或運算式的值。

圖 21. Expression 面板中顯示運算式值

如果想要在滿足一定條件下已經添加的斷點才有效,可以設定斷點的屬性。在編輯器的尺規欄中單擊滑鼠右鍵,彈出的功能表列中選擇 Breakpoint Properties。在顯示的視窗中,選中複選框 ”Enable Condition”,輸入需要滿足的條件,單擊 Ok。

圖 22. 設定斷點屬性

這樣,當重新執行程式調試的時候,只有滿足條件的情況下,該斷點才有效。



回頁首

總結

Pydev 結合 Ecplise 實現了如此功能強大且易用的 Python IDE,本文不能一應俱全地介紹出來,對於一些基本的功能沒有做過於詳盡的介紹,主要突出 Pydev 特有的一些功能。Pydev for Eclipse 的出現為 Python 開發人員實現高效的項目開發提供了很好的條件,該項目也在不斷的發展之中,其功能將會越來越強大。

參考資料

  • Python 專題包括了可愛的 Python 系列、Python 探索系列、Python 擴充、使用 Python 進行各種應用開發等等。
  • 查看 “Eclipse 推薦讀物列表”。
  • 在 developerWorks 上瀏覽所有 Eclipse 內容。
  • 您是 Eclipse 新手嗎?閱讀 developerWorks 文章 “Eclipse 平台入門” 以瞭解它的起源和架構,以及如何用外掛程式擴充 Eclipse。
  • 查看 IBM developerWorks 的 Eclipse 項目資源,提高您的 Eclipse 技巧。
  • 訪問 developerWorks 開放源碼專區,獲得豐富的 how-to 資訊、工具和項目更新,協助您用開放源碼技術進行開發,並與 IBM 產品結合使用。

關於作者

鄭偉芳,作者目前在 IBM Rational 部門從事 ClearCase 自動化測試工作。

來自: http://hi.baidu.com/ma7226087/blog/item/1bd75ad6c815042307088bb1.html from:http://apps.hi.baidu.com/share/detail/21240572

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.