一、前言
大家好,我是六哥!
又有好長一段時間沒更文了,不是我懶,而是確實在更文上,沒有以前積極了,這里是該自我檢討的,
其實不是我不積極,而是相對更文學習來說,優先級不是最高,
對我而言,目前最重要的就是減肥,除了下雨下雪,我都堅持每天5公里,keep記錄如下:
早在四天前就完成了playwright的框架開發,因為一些事要處理就把文章的事擱置了,
下面將為大家分享關于playwright的自動化測驗框架的設計與實作,這里僅分享思路,感興趣的同學請自行嘗試!
二、如何實作
1、框架要素
延續了所有框架的通用要素:
- 日志&測驗步驟
- 報告&失敗截圖
- 組態檔&資料源設計
- 公共函式&API封裝
- 測驗資料&引數化、解耦
- 測驗套件&測驗用例設計、組裝
2、日志
日志可以很好輔助我們定位問題,這里我使用的是log4j,簡單配置即可使用,測驗代碼如下:
package com.playwrght.frame.log;
import org.apache.log4j.Logger;
import org.testng.annotations.Test;
public class TestLog {
/**
* log4j日志
*/
private static Logger logger = Logger.getLogger(TestLog.class);
@Test
public void testLog() {
logger.info("this is info log!!");
logger.error("this is error log!!");
}
}
3、瀏覽器的封裝
playwrght就三個瀏覽器,相對也比較簡單,這里直接貼圖了,如下:
4、基礎層
這里主要用于處理,元素物件和原生API的封裝,示例如下圖:
我只寫了點擊和輸入的,其他的沒寫,感興趣的同學請自己嘗試,
5、測驗用例
就是呼叫封裝好的API,示例代碼如下:
package com.playwrght.frame.testcase;
import com.playwrght.frame.page.BasePage;
import com.playwrght.frame.report.TestFailListener;
import io.qameta.allure.*;
import org.testng.Assert;
import org.testng.annotations.*;
@Epic("登錄功能測驗")
@Feature("登錄功能")
@Listeners(TestFailListener.class)
public class TestLogin extends BasePage {
BasePage basePage;
@BeforeClass
public void beforeClass() {
basePage = new BasePage();
}
//用例編號
@TmsLink("562")
//bug編號
@Issue("4042")
//bug嚴重等級,優先級,包含blocker, critical, normal, minor, trivial 幾個不同的等級
@Severity(SeverityLevel.TRIVIAL)
//用例描述
@Description("測驗一個流程,用作回歸冒煙測驗")
/**
*功能塊,具有相同feature或astory的用例將規整到相同模塊下,執行時可用于篩選
*/
@Story("登錄模塊-登錄功能")
@Test(description = "驗證登錄功能", dataProvider = "loginData")
public void testDemo(String userName,String passWord,String msg) throws Exception {
basePage.open();
basePage.fill("用戶名",userName);
basePage.fill("密碼",passWord);
basePage.click("登錄按鈕");
String content = basePage.getTextContent("錯誤提示");
Assert.assertEquals(content,msg);
}
@AfterClass
public void afterClass() {
basePage.quite();
}
@DataProvider(name = "loginData")
public Object[][] loginData() {
return new Object[][]{
{"user1","1","用戶名或密碼錯誤"},
{"user2","2","用戶名或密碼錯誤"},
{"user3","3","error!"},
};
}
}
6、測驗報告
因徒弟說playwight+python+飛書很秀,我一看報告就是allure,好看是真的,
就一個配置出來的東西,沒什么,就那么回事吧,也不難,所以不熟悉的同學,看看官方檔案就能很快上手!
加了監聽,即可實作運行失敗截圖,如下面代碼:
package com.playwrght.frame.report;
import io.qameta.allure.Attachment;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
import static com.playwrght.frame.page.BasePage.page;
public class TestFailListener extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult result) {
screenshot();
}
@Attachment(value = "https://www.cnblogs.com/longronglang/archive/2023/03/14/screen shot",type = "image/png")
public byte[] screenshot(){
byte[] buffer = page.screenshot();
return buffer;
}
}
說明:這里我沒用Jenkins驅動生成報告,沒必要,全在maven中完成了!
測驗報告效果如下:
運行失敗截圖:
持續集成我就不寫了,百度一搜一大把,真的超級簡單,可自行嘗試!
三、最后
寫到這里,關于Playwright系列教程的文章就基本完結了!
總體感覺比Selenium寫框架簡單多了,至于為什么,懂得人自然也懂,這里就不分享了,感興趣的同學可以自行嘗試,也可以通過公號找到我進行交流!
我是六哥,愛減肥的六哥,后面還會為大家分享更多技術文章,還請繼續關注我!
優秀不夠,你是否無可替代
軟體測驗交流QQ群:721256703,期待你的加入!!
歡迎關注我的微信公眾號:軟體測驗君

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/546807.html
標籤:其他
