Hello Playwright:(4)自動化測試

利用 Playwright 提供的 API,我們在瀏覽器上做的很多事情都可以自動化。例如,搜索數據、填寫表單和下載文件等等。

但最適合的工作,就是自動化測試 Web 應用程序。

自動化測試

測試是軟件開發中的一項基本任務,至少,你需要運行應用程序以查看它是否按預期工作。

但是要真正測試一個功能是否正常,需要要覆蓋盡可能多的場景。例如,填寫一個表單,你就必須要驗證如下常見的場景:

  • 完全正確的數據

  • 錯誤的數據類型,比如數字框輸入了字母

  • 錯誤的數據范圍,比如年齡輸入了1000

  • 必填字段為空

雖然可以用純手工進行測試。但是有經驗的開發人員會基于這些場景編寫測試代碼,并且可以自動化運行這些測試代碼,保證不會遺漏任何場景或必須重復執行相同的測試。

而測試 Web 應用程序需要使用瀏覽器,這正給了 Playwright 以用武之地。

測試框架

雖然 Playwright for .NET 不依賴于特定的測試運行程序或測試框架就可運行,但是利用測試框架可以幫助我們更好地編寫自動化測試。

.NET 下的測試框架有很多。但是官方推薦使用 NUnit 作為測試框架。你也可以嘗試使用其他你熟悉的測試框架。

Demo

下面我們將將使用站點 https://www.baidu.com 作為測試用例,測試頁面標題是否為“百度一下,你就知道”。

在命令行窗口,使用 dotnet CLI 創建一個 NUnit 測試項目,并添加 Playwright 依賴:

dotnet?new?nunit?-n?HelloPlaywright_04
cd?HelloPlaywright_04dotnet?add?package?Microsoft.Playwright.NUnit

修改 UnitTest1.cs 代碼如下:

using?Microsoft.Playwright.NUnit;
using?NUnit.Framework;
using?System.Threading.Tasks;namespace?HelloPlaywright_04
{public?class?Tests?:?PageTest{[Test]public?async?Task?Title_IsCorrect(){var?result?=?await?Page.TitleAsync();Assert.AreEqual("百度一下,你就知道",?result);}}
}

運行測試,失敗

67b89189f7f62c2c8be822daadae1489.png

但是這是對的,因為我們還沒有初始化環境:

namespace?HelloPlaywright_04
{public?class?Tests?:?PageTest{[SetUp]public?async?Task?SetUp(){await?Page.GotoAsync("https://www.baidu.com");}...}
}

運行測試,成功

39eb88a964cfb0513352fcd3edc9f60a.png

結論

Microsoft.Playwright.NUnit 提供了多個基類用于創建不同級別下的測試:

類名說明
PageTest每個測試都會獲得在其自己獨有的 BrowserContext 中創建的網頁的新副本。擴展此類是編寫全功能 Playwright 測試的最簡單方法。
ContextTest每個測試都會得到一個 BrowserContext 的新副本。你可以根據需要在此上下文中創建任意數量的頁面。使用此測試是測試需要多個選項卡的多頁場景的最簡單方法。
BrowserTest每個測試都將獲得一個瀏覽器,并且可以創建任意數量的上下文。每個測試負責清理它創建的所有上下文。
PlaywrightTest為每個測試提供了一個 Playwright 對象,以便測試可以啟動和停止任意數量的瀏覽器。

添加微信號【MyIO666】,邀你加入技術交流群

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287167.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287167.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287167.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

通才和專家:如何選擇

原文:Generalists and specialists: thoughts on hiring作者:Nicholas C. Zakas 我的職業生涯經歷過各種規模的公司,從非常小的五人創業團隊到 13000 人的大公司雅虎,再到約 1000 人規模的 Box(我目前所在)…

Android之解決NestedScrollView嵌套ViewPager導致出現左右頁面滑動沖突

1 問題 NestedScrollView里面嵌勒ViewPagerTabLayout,導致在這個頁面監聽不到左右頁面滑動,需要解決這個監聽滑動問題。 2 解決辦法 val nestedScrollView: NestedScrollView mainView!!.findViewById(R.id.nestedScrollView)nestedScrollView.isFillV…

linux和裸機的區別,操作系統與裸機的區別

我們在學習stm32到一定階段可能會了解操作系統,然后便有這種問題產生,下面我就來粗略說說“操作系統與裸機的區別,以及stm32能運行什么操作系統,能運行linux系統嗎”等問題。操作系統與裸機的區別裸機運行的程序代碼,一…

ArcGIS 10.7拆分多部件要素(Multipart Features)至單部件要素的兩種方法

GIS中經常會出現多部件要素的現象,為了便于檢查拓撲等關系,需要將其拆分為單個的部件。例如,在用同一個圖層的多個圖斑去裁剪(Clip)時,或者將多個不相鄰的圖斑進行合并(merge)時,可能會產生多部件要素,本文演示ArcGIS10.7版本中常見的兩種拆分多部件要素至單部件要素…

spring-session + redis 實現集群 session 共享

2019獨角獸企業重金招聘Python工程師標準>>> 目前市面上實現session共享的方案有很多,其中比較常用的是使用Tomcat、Jetty等web服務器提供的session共享功能,以此將session內容統一存放在數據庫(如mysql)或者緩存&…

第三方的使用

1. MMDrawerController 抽屜效果 2.SVProgressHUD 透明指示層 3.SDCycleScrollView 無限輪播器 4.SDWebImage 異步圖片加載 5.RESideMenu 抽屜效果 6.AFNetworking 網絡請求 7.MJRefresh tableView上下拉刷新 8.MJExtension json轉模型 9.Masonry 布局適配框架 10.UMengSocia…

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(10)無底洞的循環

本系列文章將會以通俗易懂的對話方式進行教學,對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新,包括別的語言以及實戰都將使用對話的方式進行教學,基礎編程語言教學適用于零基礎小白,之后實戰課程也將會逐步更新。 若…

業務流水號規則生成組件

對于很多業務系統都需要生成業務流水號,如果訂單號、購采單號等等;而這些業務流水號并不是簡單的一個增長數值,它們很多時候都有一些不同的規則來定義,如不同類型的字母或地區拼音簡寫等。為了更靈活生成這些有規則的業務流水號Be…

Android之奔潰提示com.google.gson.internal.LinkedTreeMap cannot be cast to java.util.HashMap

1 問題 Android端獲取服務端的數據然后我直接把數據轉hashMap提示錯誤如下&#xff0c; com.google.gson.internal.LinkedTreeMap cannot be cast to java.util.HashMap 2 解決辦法 直接轉Map集合即可 (t.data as Map<String, String>).forEach({if (KEEP_NAME.equals…

ArcGIS中國工具(ArcGISCTools)3.2 安裝教程(附安裝包下載)

ArcGIS中國工具,簡稱CTools,集成在ArcGIS 10.x系列版本中。本文在ArcGIS10.7的基礎之上,演示3.2版本安裝過程,并提供下載地址共大家學習和交流。 一、安裝過程

函數式編程工具:filter和reduce

# -*- coding: utf-8 -*- #python 27 #xiaodeng #函數式編程工具&#xff1a;filter和reduce#python內置函數中&#xff0c;map函數是用來進行函數式編程這類工具最簡單的內置函數代數#函數式編程含義&#xff1a; #一種編程范式&#xff0c;也就是如何編寫程序的方法論&#x…

阿里云ECS,搭建MySQL5.7數據庫環境

為什么80%的碼農都做不了架構師&#xff1f;>>> 配置mysql yum源 [rootiZbp1j6oiamq7t2otpryarZ ~]# cd /data/ [rootiZbp1j6oiamq7t2otpryarZ data]# ll total 0###################################下載mysql源安裝包# [rootiZbp1j6oiamq7t2otpryarZ data]# wge…

Python——通過斐波那契數列來理解生成器

一、生成器&#xff08;generator&#xff09; 先來看看一個簡單的菲波那切數列&#xff0c;出第一個和第二個外&#xff0c;任意一個數都是由前兩個數相加得到的。如&#xff1a;0,1,1,2,3,5,8,13...... 輸入斐波那契數列前N個數&#xff1a; def fab(max): n, a, b 0, 0, 1 …

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(9)集萬家之長不死 python

本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新&#xff0c;包括別的語言以及實戰都將使用對話的方式進行教學&#xff0c;基礎編程語言教學適用于零基礎小白&#xff0c;之后實戰課程也將會逐步更新。 若…

公司c語言面試題目,c語言面試最必考的十道試題,求職必看!!!

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓6、free()函數問&#xff1a;下面的程序會在用戶輸入’freeze’的時候出問題&#xff0c;而’zebra’則不會&#xff0c;為什么?#include int main(int argc, char *argv[]) {char *ptr (char*)malloc(10);if(NULL ptr){printf(…

Android之解決TabLayout里面每個Tab項的間距和修改指示線的長度(非反射)和修改選中字體大小

1 問題 1)由于TabLayout設置了可滑動Tab參數 app:tabMode="scrollable" 導致每個Tab之間的間距很大,但是UI設計圖里面的字體之間的間距很小,我們改怎么解決? 2)修改TabLayout指示線的長度(非反射) 3)修改選中的字體大小并且加粗 2 解決辦法 問題1解決辦法…

【重磅】ArcGIS 10.8手把手經典圖文安裝教程(附安裝包全套裝下載,親測可用)

ArcMap時代的最后一版軟件,未來官方對ArcMap的支持將僅限于提供補丁,更新和新環境支持,換句話說ArcMap10.8.X將會是最終版本,以后不會再有ArcMap10.9了,官方建議所有人在完成工作流程后立即遷移到ArcGIS Pro。 時間真快,ArcGIS 10.7剛裝完沒幾天,作為GISer的我,有的開始…

聊聊 C# 中的 Visitor 模式

前言 Visitor模式在日常工作中出場比較少&#xff0c;如果統計大家不熟悉的模式&#xff0c;那么它榜上有名的可能性非常大。使用頻率少&#xff0c;再加上很多文章提到Visitor模式都著重于它克服語言單分派的特點上面&#xff0c;而對何時應該使用這個模式及這個模式是怎么一…

AcWing 889. 滿足條件的01序列(卡特蘭數應用)

滿足條件的01序列 假設長度為n個序列要求滿足題意1的前綴0的個數不能超過1的個數 將問題抽象為從(0, 0)到(n, n) 向上走一個代表這一步對應序列中的值是1&#xff0c;向右走代表序列中的值是0 要想滿足1的前綴0的數量大于1的數量就需要滿足所有路過的途徑在y x這個函數個下面…

添加ASP.NET網站資源文件夾

ASP.NET應用程序包含7個默認文件夾&#xff0c;分別為Bin、APP_Code、App_GlobalResources、App_LocalResources、App_WebReferences、App_Browsers和“主題”文件夾。每個文件夾都存放ASP.NET應用程序的不同類型的資源。 方法 說明Bin  包含程序所需的所有已編譯程序集&#…