---相同點: 測試框架:經過python代碼來編寫用例、蒐集用例、運行用例、生成報告---編寫用例: unittest:繼承TestCase unittest.testcase pytest:函數/類裏面的方法,用例名稱必須以test_開頭,若是用例在類中,類名必須以Test開頭---前置後置: unittest:setup/teardown setupClass,tearDownClass setup:當中獲得的變量,如何從傳遞給測試用例 self.xxx setupClass:cls.xxx pytest: 方案一:沿用unittest的風格 一、用例級別:setup teardown 類和類外部的用例均可以使用 二、類級別:setup_class teardown_class @classmethod def setup_class(self): print("類前置-01") @classmethod def teardown_class(self): print("類後置01") 三、模塊級別: setup_module teardown_module 方案二:fixture 先定義再調用 定義:@pytest.fixture() def init() 調用:@pytest.mark.usefixtures("init") 一、函數實現的,函數名稱不固定---如何知道它是前置/後置 @pytest.fixture def fix(): pass 二、前置和後置操做,寫在一個函數裏面 ---如何區分哪些是前置代碼 哪些是後置代碼 @pytest.fixture def fix(): 前置代碼 yeild #分隔線 後置代碼 三、4個做用域 測試函數(function)、測試類(class)、測試模塊文件(module)、測試會話(session) @pytest.fixture(scope=function/class/module/session) def fix(): 前置代碼 yield #分隔線 後置代碼 四、不須要跟測試類/測試函數放在一塊兒,須要時再調用 五、前置操做獲得的一些數據,如何傳遞給測試用例 yield 返回值 在測試用例當中,以fixture函數名做爲用例參數,用例參數接收返回值 def init(): print("做用於爲測試函數的======前置======代碼") a = [1,2,3,4,5,6] yield a class TestDay: def test_new01(self,init): print("===類下的用例1===") for i in init: print(i) 測試函數的參數有兩種:fixture 參數化-case 若是fixture有返回值,那麼將它做爲測試函數的參數時,則能夠不用使用:@pytest.mark.usefixtures("init") 程序會自動找 六、共享機制:conftest.py conftest.py:定義fixture,能夠定義多個 共享的範圍:當前conftest.py所在目錄下(包括子孫目錄)的全部測試用例共享 若是須要在test01基礎上增長內容,變成test02。須要在test02上引用test01---僞繼承 @pytest.fixture() def fix01(): pass @pytest.fixture() def fix02(fix01): 新增的代碼 yield fix01 執行順序:fix01前置 fix02前置 fix02後置 fix01後置 嵌套的前提:fix01 與fix02 要麼同級,要麼fix01>fix02---斷言 unittest:self.assert pytest:assert 表達式,根據表達式的結果判斷經過/失敗---收集用例 用例分散在多個文件中 unittest:TestLoad.discover(目錄)---收集到套件中,run方法執行 pytest:不須要寫代碼去搜集用例,自動收集-查找用例的方式。執行用例時會自動收集 pytest命令行:pytest[參數] 如何自動收集用例: 一、目錄--從哪一個目錄下開始搜索用例: rootdir:在哪一個路徑下運行,則pytest自動在當前路徑下進行查找-rootdir 二、文件名--命名符合test_*.py或者*_test.py條件的文件名 三、函數/類下方法:-函數名以test_開頭 -以Test開頭(不含__init__)的類下的test_開頭方法 蒐集並運行用例 方式一:pytest -s -v 控制檯顯示詳細用例執行狀況 方式二:python文件中-pytest.main()---執行順序 一、文件名:ASCALL碼順序從上到下 二、文件內部:按照代碼前後順序-即從上到下執行---測試報告 unittest:HTMLTestRunner BeautifulReport pyteest:allure