一、前言
大家好,我是六哥!
又有好长一段时间没更文了,不是我懒,而是确实在更文上,没有以前积极了,这里是该自我检讨的。
其实不是我不积极,而是相对更文学习来说,优先级不是最高。
对我而言,目前最重要的就是减肥,除了下雨下雪,我都坚持每天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 = "screen shot",type = "image/png") public byte[] screenshot(){ byte[] buffer = page.screenshot(); return buffer; } }
说明:这里我没用Jenkins驱动生成报告,没必要,全在maven中完成了!
测试报告效果如下:
运行失败截图:
持续集成我就不写了,百度一搜一大把,真的超级简单,可自行尝试!
三、最后
写到这里,关于Playwright
系列教程的文章就基本完结了!
总体感觉比Selenium
写框架简单多了,至于为什么,懂得人自然也懂,这里就不分享了,感兴趣的同学可以自行尝试,也可以通过公号找到我进行交流!
我是六哥,爱减肥的六哥,后面还会为大家分享更多技术文章,还请继续关注我!