1,pytes框架介紹及與unittest框架對比
阿新 • • 發佈:2021-12-10
一,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()
- assertEqual(a, b) 判斷 a 和 b 是否相等
- assertNotEqual(a, b) 判斷 a 不等於 b
- assertTrue(a) 判斷 a 是否為 Ture
- assertFalse(a) 判斷 a 是否為 False
- assertIn(a, b) a 包含在 b 裡面
- 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/