Pytest VS Unittest 簡單說一下之間的優缺點


一、什么是單元測試框架?

unittest 是python標准的單元測試框架模塊

pytest 是python第三方庫的測試框架

二、從兼容性方面考慮

因unnitest是標准庫,所以unnitest的兼容性更強

三、安裝方面

unnitest是標准庫,python是自帶的,安裝python以后可以直接導入

第三方庫:需要獨立安裝,要注意兼容性,有可能會存在安裝不成功,或者是某些庫的功能使用不了。

四、unittest 的使用更加復雜一些, pytest 更加容易使用。

eg:

unittest 

第一步:創建測試套件

suite = unittest.TestSuite()

第二步:testloader.discover(test_case_dir), 加載測試用例到套件

loader = unittest.TestLoader()

suite.addTest(loader.discover(CASE_DIR))

第三步:啟動器, 運行, testrunner.run()

runner.run(suite)

pytest , 自動收集測試用例,自動執行測試用例。

pytest 運行:
1, pytest.main() python: 代碼形式. 生產環境。
2, 命令行的形式 : 在項目根目錄下運行 pytest 命令
3, pycharm 右鍵運行(如果pycharm 沒有出現 pytest 命令,run. configraiton 當中進行配置。)

五、斷言

pytest    assert 1=1

unittest  assertEqual(expected,autual)

六、pytest可以靈活運用指定的測試用例,標簽化,回歸,正向、冒煙、登陸  使用的是pytest的mark功能

七、pytest (夾具 )環境管理靈活,會話、模塊,哪個用,哪個不用。fixture,setup,tearDown,setupClass,setUpModule

八、pytest有豐富的插件,測試報告。eg: allure

九、pytest 和unnitest/nose兼容 意思是以unnitest的框架寫的用例,以pytest去執行是可以的,但是反之就不行。

十、pytest發現用例的格式為:

pytest 收集測試用例的規則(pytest 將怎樣的函數看成是測試用例)
1, 模塊名: test_*.py 或者是 *_test.py
2, 類名: TestLogin
3,   方法名: test_
4,   pytest 的測試用例並不一定要以類的形式存在,可以直接以函數的形式存在:
def test_demo():
      pass
5.類形式:
class TestYang:
# 不要寫 __init__() 函數, 容易報錯
def test_yangleduo(self):
      pass

當在哪個文件夾,(目錄)執行 pytest 指令,那么 pytest 會自動發現當前目錄下所有
test_ 開頭的 py 文件,將這些文件當成測試用例文件.

unnitest 不能找到直接以函數的形式存在的用例

十一、用例的執行順序

unittest 是根據 ascii 編嗎 排序
test_login_1_success test_login_2_error
pytest 的排序: 從上到下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM