2014-01-18 32 views
3

對不起,如果這是一個非常愚蠢的問題,但我一直在尋找年齡,只是無法弄清楚。Python - 單元測試

所以我有一個關於單元測試的問題,不一定是關於Python的問題,但是因爲我正在使用Python,所以我選擇了基於它的問題。

我得到了單元測試的想法,但唯一能在互聯網上找到的就是非常簡單的單元測試。就像測試方法總和(a,b)是否返回a + b的總和一樣。

但是,如何在處理更復雜的程序時應用單元測試?作爲一個例子,我寫了一個爬蟲程序。我不知道它會返回什麼,否則我不需要爬蟲。那麼,我怎麼才能測試一下抓取工作正常,而不知道該方法會返回什麼?

在此先感謝!

回答

4

整個抓取工具可能會在功能上進行測試(我們會到達那裏)。至於單元測試,你可能已經爲你的爬蟲編寫了幾個組件,比如頁面解析器,url識別器,fetcher,重定向處理器等。這些是你的UNITS。你應該對它們中的每一個進行單元測試,或者至少對那些至少有些複雜的邏輯進行測試,在那裏你可以期待某些輸出的輸入。請記住,有時你會測試行爲,而不是輸入/輸出,這是模擬和存根可能派上用場的地方。

至於功能測試 - 您需要創建一些測試場景,例如帶有您要創建的其他網頁的鏈接的網頁,並在某些服務器上進行設置。然後,您需要在您創建的網頁上執行抓取,並檢查抓取工具是否按預期行事(您應該知道該期待什麼,因爲您將創建這些網頁)。

另外,有時在單元和功能測試之間執行集成測試是很好的。如果您有一些組件一起工作(例如使用重定向處理程序的fetcher),檢查這兩者是否按預期一起工作是很好的(例如,您可以在您自己的服務器上創建資源,在獲取時會返回重定向HTTP代碼,以及檢查是否按預期處理)。

那麼,到底:

  • 創建創建應用程序,就看你有沒有做簡單的錯誤

  • 創造協同工作的組件集成測試的組件單元測試,看看你是否把所有東西粘在一起就好了

  • 創建功能測試,確保你的應用程序能按預期工作(因爲一些錯誤可能來自項目,而不是來自實施)

+0

謝謝,它現在更有意義了! – SergioP

0

單元測試驗證您的代碼是否符合您在給定環境中的預期。你應該確保所有其他變量都像你期望的那樣,並測試你的單一方法。要爲使用第三方API的方法做到這一點,您應該使用模擬庫來嘲笑它們。通過嘲笑您提供您期望的數據並驗證您的方法是否按預期工作。您還可以嘗試分離您的代碼,以便使得API請求的部分和解析/使用它的部分是分開的,並且使用您提供的特定API示例響應對第二部分進行單元測試。