pytest和unittest都是python中的測試框架,pytest相比unittest 更加的靈活,具體體現在 以下幾點
1.寫測試方法時不用繼承類
2.前置后置放在一起
2.1如果是全局共享的前置,就會寫在一個固定的文件中,(比如一個系統中打開瀏覽器,訪問系統網址就是全局共享的前置)這個文件命名為conftest,其他的各個模塊設計到的前置放在用例文件中
from selenium import webdriver import pytest from TestDatas import global_datas as gd @pytest.fixture def init_driver(): driver = webdriver.Chrome() driver.maximize_window() driver.get(gd.login_url) yield driver driver.quit()
2.2前置后置的定義語法,@pytest.fixture,前置后置用yield隔開,yield前的就是前置,yield后的就是后置,yield后面加的語句是返回值,如上面代碼中的yield driver,driver就是返回值
2.3用例中用到前置時,在用例前加上@pytest.mark.usefixtures
@pytest.mark.usefixtures("前置的名稱")
2.4如果用例要用上返回值,就在函數參數上加上前置名稱
def test_login_success(self,init_driver):#init_driver是前置名稱 # 登錄 #LoginPage(self.driver).login_success(*lds.success) LoginPage(init_driver).login_success(*lds.success) #斷言 assert(HomePage(init_driver).get_element_exists())==True
3.有給用例打標簽的功能,運行時,通過標簽進行分類運行
3.1先建一個文件,定義好標簽名,作者在此用的時ini文件來定義標簽名,語法如下,markers=標簽名
[pytest] markers= demo_fail: just for demo show smoke
3.2在需要打標簽的測試函數以及類上,加上@pytest.mark.標簽名
@pytest.mark.標簽名
4運行用例,unittest需要加載用例,而pytest中是自動識別用例,pytest命令在哪個目錄下執行,那就默認從哪個目錄下開始搜索用例。
5.pytest斷言要比unittest靈活,assert 表達式即可。(erunittest當中,要assert*)