之前,我曾轉過一個單元測試框架系列的文章,里面介紹了unittest、nose/nose2與pytest這三個最受人歡迎的Python測試框架。
本文想針對測試中一種很常見的測試場景,即參數化測試,繼續聊聊關于測試的話題,并嘗試將這幾個測試框架串聯起來,做一個橫向的比對,加深理解。
1、什么是參數化測試?
對于普通測試來說,一個測試方法只需要運行一遍,而參數化測試對于一個測試方法,可能需要傳入一系列參數,然后進行多次測試。
比如,我們要測試某個系統的登錄功能,就可能要分別傳入不同的用戶名與密碼,進行測試:使用包含非法字符的用戶名、使用未注冊的用戶名、使用超長的用戶名、使用錯誤的密碼、使用合理的數據等等。
參數化測試是一種“數據驅動測試”(Data-DrivenTest),在同一個方法上測試不同的參數,以覆蓋所有可能的預期分支的結果。它的測試數據可以與測試行為分離,被放入文件、數據庫或者外部介質中,再由測試程序讀取。
2、參數化測試的實現思路?
通常而言,一個測試方法就是一個最小的測試單元,其功能應該盡量地原子化和單一化。
先來看看兩種實現參數化測試的思路:一種是寫一個測試方法,在其內部對所有測試參數進行遍歷;另一種是在測試方法之外寫遍歷參數的邏輯,然后依次調用該測試方法。
這兩種思路都能達到測試目的,在簡單業務中,沒有毛病。然而,實際上它們都只有一個測試單元,在統計測試用例數情況,或者生成測試報告的時候,并不樂觀。可擴展性也是個問題。
那么,現有的測試框架是如何解決這個問題的呢?
它們都借助了裝飾器,主要的思路是:利用原測試方法(例如test()),來生成多個新的測試方法(例如test1()、test2()……),并將參數依次賦值給它們。
由于測試框架們通常把一個測試單元統計為一個“test”,所以這種“由一生多”的思路相比前面的兩種思路,在統計測試結果時,就具有很大的優勢。
以上內容為大家介紹了Python中如何實現參數化測試?希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.dietsnews.net/