入門篇_編寫測(cè)試用例

Playwright 斷言是專門為動(dòng)態(tài) Web 設(shè)計(jì)的。檢查會(huì)自動(dòng)重試,直到滿足必要條件。Playwright 內(nèi)置自動(dòng)等待功能,意味著它會(huì)等待元素可操作后再執(zhí)行操作。Playwright 提供了一個(gè) expect 函數(shù)來(lái)編寫斷言。
看一下下面的示例測(cè)試,了解如何使用定位器和基于 Web 的斷言來(lái)編寫測(cè)試用例。
斷言(Assertions)
Playwright 提供了 expect 函數(shù),它會(huì)等待滿足期望的條件。
這段代碼使用Playwright提供的expect函數(shù),對(duì)當(dāng)前頁(yè)面進(jìn)行斷言。其中,斷言的條件是頁(yè)面的標(biāo)題中包含"Playwright"這個(gè)子字符串。使用了Python內(nèi)置的re模塊創(chuàng)建了一個(gè)正則表達(dá)式對(duì)象,作為期望標(biāo)題的參數(shù)。
定位器(Locators)
定位器是 Playwright 自動(dòng)等待和重試的核心。定位器代表在任何時(shí)刻在頁(yè)面上查找元素的方法,并用于對(duì)元素執(zhí)行操作,如.click、.fill 等。
這段代碼通過(guò) get_by_role
函數(shù)創(chuàng)建一個(gè)名為 get_started
的定位器(locator)。該定位器被用來(lái)查找網(wǎng)頁(yè)上 role
屬性為 link
,name
屬性為 Get started
的元素。
測(cè)試隔離(Test Isolation)
Playwright Pytest 插件基于測(cè)試裝置的概念,例如傳遞到您的測(cè)試中的內(nèi)置頁(yè)面裝置。由于瀏覽器上下文,頁(yè)面在測(cè)試之間被隔離,這相當(dāng)于一個(gè)全新的瀏覽器配置文件,每個(gè)測(cè)試都會(huì)獲得一個(gè)全新的環(huán)境,即使在單個(gè)瀏覽器中運(yùn)行多個(gè)測(cè)試也是如此。
這段代碼導(dǎo)入了Playwright的同步API中的Page
類,然后定義了一個(gè)名為test_basic_test
的測(cè)試函數(shù),它的參數(shù)是一個(gè)Page
對(duì)象。在測(cè)試中,可以使用Page
對(duì)象進(jìn)行頁(yè)面操作和斷言檢查,例如,通過(guò)調(diào)用goto()
方法導(dǎo)航到一個(gè)URL,或者通過(guò)調(diào)用expect()
方法執(zhí)行斷言檢查。由于該測(cè)試函數(shù)期望接收一個(gè)Page
對(duì)象,因此可以使用Playwright Pytest插件來(lái)自動(dòng)地創(chuàng)建和銷毀瀏覽器上下文和頁(yè)面對(duì)象,從而使測(cè)試更加簡(jiǎn)單易用。
使用測(cè)試鉤子(Using Test Hooks)
您可以使用各種固定裝置在測(cè)試之前或之后執(zhí)行代碼,并在它們之間共享對(duì)象。例如,具有自動(dòng)使用功能的范圍function
固定裝置的行為類似于 beforeEach/afterEach。具有module
自動(dòng)使用功能的作用域固定裝置的行為類似于 beforeAll/afterAll,它在所有測(cè)試之前和之后運(yùn)行。
這段代碼演示了如何使用 Pytest 和 Playwright 來(lái)自動(dòng)化測(cè)試一個(gè) Web 應(yīng)用程序。 @pytest.fixture
裝飾器用于定義一個(gè)測(cè)試用例之前和之后要執(zhí)行的代碼塊。 scope = "function"
表示該代碼塊將在每個(gè)測(cè)試函數(shù)運(yùn)行之前和之后運(yùn)行一次。 autouse=True
表示該代碼塊將自動(dòng)使用,而無(wú)需在測(cè)試函數(shù)中顯式調(diào)用。
在此示例中,before_each_after_each
代碼塊使用了一個(gè) page
對(duì)象,該對(duì)象表示一個(gè)瀏覽器頁(yè)面。它通過(guò) Page
類從 playwright.sync_api
模塊導(dǎo)入。page.goto
方法用于在每個(gè)測(cè)試用例之前訪問(wèn)網(wǎng)頁(yè)。使用 yield
關(guān)鍵字來(lái)告訴 Pytest 執(zhí)行測(cè)試用例代碼,然后再繼續(xù)執(zhí)行 afterEach
代碼塊。
test_main_navigation
測(cè)試用例函數(shù)接受一個(gè)名為 page
的參數(shù),該參數(shù)是 before_each_after_each
代碼塊返回的 page
對(duì)象。expect(page).to_have_url("https://playwright.dev/")
用于檢查頁(yè)面的 URL 是否與指定的 URL 匹配,這是使用 Playwright 提供的 expect 函數(shù)實(shí)現(xiàn)的。

每天晚上來(lái)學(xué)習(xí)
