使用 Playwright 对 ASP.NET Core 应用执行功能测试
前言
在前面的文章中,我們已經介紹過?Playwright for .NET,它常用于自動化測試已經部署好的 Web 應用。
其實,開發人員也可以使用它在 ASP.NET Core 應用程序中進行功能測試。
功能測試
功能測試是從用戶角度編寫,用于基于其要求驗證系統的正確性。由于功能測試在系統級別運行,所以可能需要一定程度的UI自動化。
目前常用的實現方式[1],是驗證給定的路由(比如"/")是否返回預期的成功狀態代碼和 HTML 輸出,例如:
[Fact] public?async?Task?ReturnsHomePageWithProductListing() {//?Arrange?&?Actvar?response?=?await?Client.GetAsync("/");response.EnsureSuccessStatusCode();var?stringResponse?=?await?response.Content.ReadAsStringAsync();//?AssertAssert.Contains(".NET?Bot?Black?Sweatshirt",?stringResponse); }測試案例
但是,這樣測試不能保證用戶交互后是否返回預期的輸出。
例如,我們需要測試,點擊“Privacy”鏈接,顯示正確的頁面數據,如下圖:
這時,我們就可以使用 Playwright for .NET 來編寫功能測試。
編寫代碼
在 WebApplication1 解決方案中添加 XUnit 項目,引用 nuget 包Microsoft.Playwright。
像普通自動化測試那樣,編寫測試用例代碼:
const?string?BaseURL?=?"http://localhost:5000";[Fact] public?async?Task?Test1() {var?playwright?=?await?Playwright.CreateAsync();var?browser?=?await?playwright.Chromium.LaunchAsync();var?page?=?await?browser.NewPageAsync();await?page.GotoAsync(BaseURL);await?page.ClickAsync("a[href='/Privacy']");var?handle?=?await?page.WaitForSelectorAsync("h1");var?text?=?await?handle.InnerTextAsync();Assert.Equal("Privacy?Policy",?text); }啟動應用
現在測試還不能正常執行,因為我們是在解決方案中進行測試,并沒有真正啟動應用,導致 Playwright 無法瀏覽 BaseURL。
因此,我們需要在測試代碼頂部啟動應用。
實現方式也很簡單,直接調用Program.cs的CreateHostBuilder方法啟動站點:
這里有個小技巧,我們傳遞--urls參數,指定了應用默認地址。
現在,功能測試可以正常執行,并通過測試了。
結論
功能測試可以確保應用程序的前端按預期運行,使用 Playwright for .NET 保證了用戶交互也是按預期執行。
想了解更多內容,請關注我的個人公眾號”My IO“
參考資料
[1]
實現方式: https://docs.microsoft.com/zh-cn/dotnet/architecture/modern-web-apps-azure/test-asp-net-core-mvc-apps#functional-testing-aspnet-core-apps
總結
以上是生活随笔為你收集整理的使用 Playwright 对 ASP.NET Core 应用执行功能测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WPF 展示视频修改为Writeable
- 下一篇: 基于ASP.NET Core api 的