跳到主要內容

隔離

簡介

使用 Playwright 撰寫的測試會在稱為瀏覽器內容的隔離、全新環境中執行。此隔離模型可提高重現性並防止級聯測試失敗。

什麼是測試隔離?

測試隔離是指每個測試都與另一個測試完全隔離。每個測試都獨立於任何其他測試執行。這表示每個測試都有自己的本機儲存空間、工作階段儲存空間、Cookie 等。Playwright 使用 BrowserContext 來達成此目的,BrowserContext 相當於無痕模式設定檔。它們建立快速且便宜,並且完全隔離,即使在單一瀏覽器中執行也是如此。Playwright 為每個測試建立一個內容,並在該內容中提供預設的 Page

為什麼測試隔離很重要?

  • 沒有失敗延續。如果一個測試失敗,它不會影響另一個測試。
  • 易於偵錯錯誤或不穩定性,因為您可以根據需要多次執行單一測試。
  • 在平行、分片等情況下執行時,不必考慮順序。

測試隔離的兩種方式

關於測試隔離,有兩種不同的策略:從頭開始或在之間清理。在測試之間清理的問題在於,很容易忘記清理,而且有些事情是不可能清理的,例如「造訪過的連結」。來自一個測試的狀態可能會洩漏到下一個測試中,這可能會導致您的測試失敗,並使偵錯更加困難,因為問題來自另一個測試。從頭開始表示一切都是新的,因此如果測試失敗,您只需查看該測試即可進行偵錯。

Playwright 如何實現測試隔離

Playwright 使用瀏覽器內容來實現測試隔離。每個測試都有自己的瀏覽器內容。執行測試每次都會建立新的瀏覽器內容。當使用 Playwright 作為測試執行器時,預設會建立瀏覽器內容。否則,您可以手動建立瀏覽器內容。

using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync();
var context = await browser.NewContextAsync();
var page = await context.NewPageAsync();

瀏覽器內容也可用於模擬涉及行動裝置、權限、地區設定和色彩配置的多頁情境。請查看我們的模擬指南以瞭解更多詳細資訊。

單一測試中的多個內容

Playwright 可以在單一情境中建立多個瀏覽器內容。當您想要測試多使用者功能(例如聊天)時,這非常有用。

using Microsoft.Playwright;
using System.Threading.Tasks;

class Program
{
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
// Create a Chromium browser instance
await using var browser = await playwright.Chromium.LaunchAsync();
await using var userContext = await browser.NewContextAsync();
await using var adminContext = await browser.NewContextAsync();
// Create pages and interact with contexts independently.
}
}