一、什么是單元測試框架?
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 不能找到直接以函數的形式存在的用例