介面測試是現在比較有價效比的自動化測試方法
目前常見的介面測試框架是1. Python + unittest + HtmlTestRunner;2. Python + Pytest + allure。下面描述一下2種框架的大概區別,可以自行判斷使用的框架
1、準備工作
unittest是python自帶的庫,不用安裝。可直接使用,該框架下需要僅需安裝HtmlTestRunner外掛來檢視報告即可
Pytest是第三方庫。該框架下需要安裝Pytest框架外掛 + allure報告外掛
2、測試用例
總的來說,unittest 的測試執行需要按照一定的規範和結構,而 pytest 更加靈活,能夠自動發現測試用例,並提供更友好和詳細的執行輸出。
2.1 unittest
- 測試用例:unittest 的測試用例是基於類的,通常需要繼承 unittest.TestCase 類。因此在測試用例中必須以類來寫才可以被執行。測試方法需要以 test_ 開頭
- 執行測試用例:需要自己建立測試套裝,之後測試套件會自動發現和執行這些以 test_ 開頭測試用例。
- 測試結果:會顯示詳細的測試結果,包括測試用例的名稱、執行結果、透過/失敗的數量等資訊。
- 斷言方式:unittest提供了豐富的斷言方法,如 assertEqual()、assertNotEqual()、assertTrue() 等,用於判斷測試結果是否符合預期
2.2 Pytest
- 測試用例:可以自動發現當前目錄及其子目錄下的所有測試檔案和測試函式,並執行它們,不需要按照特定的命名規範或目錄結構,可以直接定義測試函式,並且支援引數化測試、裝飾器等特性。
- 執行測試用例:不需要建立測試套裝,會自動執行
- 測試結果:pytest 提供了更加友好和詳細的執行輸出,包括測試用例的名稱、執行結果、透過/失敗的數量、失敗原因等資訊,並且支援生成彩色的輸出。
- 斷言方式:pytest支援 Python 的標準斷言,同時還提供了豐富的外掛和擴充套件,如 assert 語句、assertion 方法等。
3、生成報告
總的來說,HtmlTestRunner 是一個簡單易用的測試報告生成工具,適合快速生成測試報告並檢視測試結果;而 Allure 提供了豐富的報告內容和互動性,支援多種語言和框架,適用於需要更詳細和定製化的測試報告需求。
3.1 HtmlTestRunner:
- 報告格式:HtmlTestRunner 生成的測試報告通常是 HTML 格式的,呈現為一個網頁,包含了測試用例的執行結果、透過/失敗的數量、測試用例的名稱、執行時間等資訊,以及測試用例的執行日誌。
- 簡單易用:HtmlTestRunner 是一個簡單易用的測試報告生成工具,使用起來非常方便,適合快速生成測試報告並檢視測試結果。
- 適用性:HtmlTestRunner 適用於 Python 中的 unittest 框架,可以與 unittest 結合使用來生成測試報告。
3.2 Allure:
- 豐富的報告內容:Allure 生成的測試報告包含了豐富的資訊,包括測試用例的執行結果、透過/失敗的數量、測試用例的名稱、執行時間,以及附加的資訊如失敗原因、截圖、日誌等,報告呈現出來的效果更加詳細和豐富。
- 互動性:Allure 生成的測試報告具有互動性,可以在報告中點選連結檢視詳細的測試用例資訊、日誌、截圖等,方便檢視測試結果和分析問題。
- 外掛支援:Allure 支援豐富的外掛,可以擴充套件其功能,如生成圖表、報表、測試歷史記錄等,可以根據需要定製報告的內容和樣式。
- 支援多種語言:Allure 不僅適用於 Python,還支援多種程式語言,如 Java、JavaScript、Ruby 等,可以在不同的測試框架中使用。
4、失敗重試
unittest 沒有自己的重試機制,需要自己透過編寫裝飾器或者自定義測試執行器來實現測試用例的重試。
pytest 則內建了重試外掛,可以更方便地實現測試用例的重試。
5、資料驅動
unittest沒有自己的資料驅動機制,需要需要安裝ddt外掛庫,該庫提供了資料驅動測試(Data-Driven Testing)的功能。
pytest 使用自帶的pytest.mark.parametrize 裝飾器來實現資料驅動測試。
6、穩定性與易用性
unittest是 Python 的官方單元測試框架,因此有較好的穩定性和可靠性。
pytest 的靈活性和豐富的功能,可能需要一定的學習曲線才能熟練使用。