1. 程式人生 > 其它 >1,pytes框架介紹及與unittest框架對比

1,pytes框架介紹及與unittest框架對比

一,pytest與unittest對比

1,編寫測試用例

1.1規則

unittest:

  • 測試類必須繼承unittest.TestCase
  • 測試函式必須以"test_"開頭
  • 使用defaultTestLoader.descover()載入測試用例時,測試模組(py檔案)名稱要以test_開頭

pytest:

  • 測試模組檔案的檔名必須是"test_.py"或者以"_test.py"
  • 測試類命名必須以"Test"開頭
  • 測試函式名必須以"test_"開頭
  • 測試類裡面不能使用"init"方法

1.2前置後置

unittest:

  • setup/teardown:在每個用例執行前後執行.
  • setupclass/teardownclass:在類中用例執行前後執行.

pytest:
方案一:

  • setup/teardown:會話級別,類和類外用例都可以使用.
  • setup_calss/teardownclass:類級別,測試類執行前後執行.
  • setup_module/teardown_module:模組級別,整個模組之情前後執行
    pytest方案二:
    fixture,是pytest特色,用的比較多

1.3斷言

unittest: self.assertXXX()

  1. assertEqual(a, b)  判斷 a 和 b 是否相等
  2. assertNotEqual(a, b)  判斷 a 不等於 b
  3. assertTrue(a)  判斷 a 是否為 Ture
  4. assertFalse(a)  判斷 a 是否為 False
  5. assertIn(a, b)  a 包含在 b 裡面
  6. asserNotIn(a, b)  a 不包含在 b 裡面

pytest: assert 表示式,表示式為真判斷通過,否者失敗

2,收集測試用例

unittest:通過TestLoader.discover(目錄)收集到套件中
pytest:為自動收集
收集方式:

  • 1,目錄 --從那個目錄下開始搜尋用例,確定roodir:pytest命令在那個目錄下執行,就以那個目錄為roodir.
  • 2,檔名 --通過檔名過濾,查詢符合條件(test_.py或者_test.py)的檔名
  • 3,函式名/類下的方法中進行查詢,符合規定的用例
    --函式名以test_開頭
    --以Test開頭的類下的test_開頭方法

3,執行測試用例

unittest:run方法

pytest:為收集並執行的過程.

  • 方式一:命令列的方式,pytest -s -v 控制檯顯示詳細的用例執行情況.
  • 方式二:main檔案的方式,py檔案main:pytest.main([命令列引數])

pytst的執行順序:

  • 1,通過檔名的ascii碼的順序執行,可通過改變檔名調整執行順序.
  • 2,py檔案內部根據程式碼的順序執行.

4,測試報告生成

unittest:

  • 通過HTMLTestRunner生成
  • 通過BeautifulReport生成

pytest:

  • html外掛:
    --安裝html外掛:pip install pytest-html
    --在執行用例的時候,新增引數 --html=htlm的路徑(相對於roodir的路徑)
  • allure
    --安裝allure命令列(手動安裝適用於各種平臺)
    --安裝allure與pytest的整合:pip install allure-pytest

二,pytest的特色

  • 1,自動收集測試用例
  • 2,斷言使用 assert 表示式
  • 3,可以設定多種級別的fixture來共享前置後置,有自己獨特的fixture方式
  • 4,有豐富的外掛庫,比如測試報告allure,官方文件:https://docs.pytest.org/en/stable/
難者不會 會者不難 學是關鍵