首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)

1.简介 TestNG为日志记录和报告提供的不同选项。现在,宏哥讲解分享如何开始使用它们。首先,我们将编写一个示例程序,在该程序中我们将使用 ITestListener方法进行日志记录。...如下图所示: 2.然后进行脚本编辑,前面的测试类包含三个测试方法,其中OpenBrowser和LogOut将在执行时通过,而SignIn通过将false布尔值传递给 Assert.assertTrue...方法而失败,该方法用于测试中的真值条件。...; } } 2.2创建自定义日志类 1.在 F:/workspace/Bjhg_Selenium/src/library中创建另一个命名为的新类 CustomReporter.java ,如下图所示...这个侦听器类的方法在测试开始、测试失败、测试成功等时由 TestNG 调用。可以实现多个侦听器并将其添加到测试套件执行中,TestNG 将调用附加到测试套件的所有侦听器。

46230
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    代码洁癖系列(五):外在的格式美

    对应到代码中就是类的名字,我们要力求只通过名字就可以知道这个类要描述什么事情;然后,代码的第一段往往都交代了整个故事的概要,类似于代码中的接口,我们往往通过接口了解类中有哪些函数,每个函数都是干什么的。...因此我们不但需要使用空白行间隔代码,还要调整代码位置,把有关联的代码放在一起,通常我们把被调用的函数放在调用函数的下面。这样别人在读我们的代码的时候再也不用经历来回“跳跃”的痛苦了。...= outputDirectory; this.selenium = selenium; } public void onTestFailure(ITestResult result)...横向格式另一个比较重要的元素就是缩进,Java程序对缩进没有强制性要求,而Python程序对缩进的要求非常严格,稍有不慎,执行的结果就会不同。...团队的规则 每一个优秀的团队都已一套属于自己的代码格式要求,有些是特定的,有些是使用公共的。我们team所用的代码规范就是Google的代码规范,阿里的代码规范也是比较被大家认可的。

    53710

    Appium系列|Appium测试框架完善(二)

    测试过程hook TestNG提供了很多好用的监听器,假设我们想监听测试脚本执行过程的各个阶段,TestNG就提供了这样的一个监听器,我们只需要去实现监听器接口,然后重写各个测试阶段的方法即可,这样就可以在测试执行的各个阶段去做我们想做的事情了...,如我们想在测试执行失败的时候添加个失败截图的处理,这时候我们就可以复写onTestFailure即可,在这个方法里添加错误截图的实现就可以了。...错误截图需要使用到Driver对象的引用,这时候需要去测试父类了添加一个静态的方法来返回Driver的对象引用,更新完的父类如下: package appium.common; import io.appium.java_client.AppiumDriver...; import io.appium.java_client.android.AndroidDriver; import org.openqa.selenium.remote.DesiredCapabilities...; import java.net.URL; public class BasicTestCase { //声明静态的对象引用driver static AppiumDriver driver

    91330

    TestNG用法概括

    该方法必须返回Object [] @Listeners 定义测试类上的侦听器 @Parameters 描述如何将参数传递给方法 @Test 将类或方法标记为测试的一部分 三....应用场景:将通用的功能抽取并封装起来,在方法中使用注解@BeforeSuite和@AfterSuite,在测试类中继承这个类,测试类在运行前会先运行@BeforeSuite注解的方法,测试类在运行后会运行...),使用@Factory注解的方法中对要测试的类调用,这时TestNG会自动调用测试类中带有@Test注解的方法 TestngFactory.java package com.sangyu.test;...@Listeners的用法 TestNG监听器就是预定义的 Java 接口。用户创建这些接口的实现类,并把它们加入到 TestNG 中,TestNG 便会在测试运行的不同时刻调用这些类中的接口方法。...,结果为某一个异常 enabled=false 忽略测试,本次测试执行中不想要执行的测试方法,默认true 8.1 timeout 属性的用法 下面的例子中,test07要在3000毫秒内给予响应,否则抛出异常

    85810

    自动化工具之Appium工具简单介绍

    UI自动收益 任何UI自动测试都不能完部替代人工测试,收益率高不高看部门怎么使用任何工具使用都是两方看怎么使用,如果有重复的工作每次需要人工去回归,建议使用自动化去回归,部门大家都用自动使用...大家下载后替换sdk中的uiautomatorviewer.jar就可使用,点击 uiautomatorviewer.bat再次弹出如下: ?...这样跑xml就能得到如下结果。 效果 ? log弹出 ? 工程目录 ? 注意: 如果在启动的时候有问题,自己微调下,大概大家只是看看而已,有问题到群里问或者联系@就行会单独指导怎么使用。...总结: 使用maven建立项目,通过tesng做测试类与传参,以上简单介绍了环境部署,定位方式,启动类,报告类等方法。...在实际工作中这些远远是不够,但对与入门做参考和基础工程框架还是可以参考,如果想在运行测试类的时直接启动服务端需要参考命名怎么启动:可以参考https://www.cnblogs.com/yc-c/p/9015621

    2.1K10

    高颜值测试报告Allure使用详解

    关于自动化测试报告 之前用过TestNG自带的测试报告、优化过ReportNG的测试报告、ExtentReport、ZReport(大飞总原创),这些是我之前都用过的,也是在去年雯姐和我说过Allure2...image.png 查看文档发现,需要有一个配置文件,将我们系统域名预先设置好,再将{}的内容使用注解进行替换,这样就能访问到我们想范文的连接了。...wx_fmt=gif&wxfrom=5&wx_lazy=1 image.png 2、自动截图 Allure最吸引我的地方是,不用存到本地,它能将Selenium的截图放到Report中 第一步:写一个监听类...; import org.openqa.selenium.TakesScreenshot; import org.testng.ITestResult; import org.testng.TestListenerAdapter...,具有相同feature或astory的用例将规整到相同模块下,执行时可用于筛选 */ @Story("查询场景-正向查询功能") @Test(description = "验证百度查询功能

    1.1K20

    自动化测试报告必会神器Allure使用

    下面分享一篇关于自动化测试报告的文章。...关于自动化测试报告: 之前用过testNG自带的测试报告、优化过reportNG的测试报告、extentreport、ZReport(大飞总原创),这些是我之前都用过的,也是在去年雯姐和我说过Allure2...Allure(已经有allure2了,小编用的就是allure2),生成的测试报告与上述对比,简直堪称完美!先上个测试报告的图表,给大家直观感受下: ? ?...查看文档发现,需要有一个配置文件,将我们系统域名预先设置好,再将{}的内容使用注解进行替换,这样就能访问到我们想范文的连接了。...2、自动截图 allure最吸引我的地方是,不用存到本地,它能将selenium的截图放到report中 第一步:写一个监听类,当执行失败自动截图 package com.allure.demo; import

    1.7K40

    TestNG小技巧

    前言 TestNG是目前很流行的Java测试框架之一,作为Java技术栈的小伙伴,TestNG也是我们做单元、接口、UI自动化的常用技术(当然Junit5很不错),所以也是入门技术之一。...那么,在实际应用中,我们常遇到的两个情况: 1、一个case有N个断言,我想执行全部断言后,最后给出testcase的执行结果,而不是在执行一个断言错误后,就终止该条testcase,判定失败。...今天介绍一下解决第一种场景的2种办法。 一、 硬断言的修改方法。...int index = 0; /** * 得到测试类所需的测试异常信息 * * @param tr */ private void handleAssertion(ITestResult...); } } /** * 根据测试类名获得该测试类的StackTraceElement数组 * * @param tr * @param stackTraceElements

    68651

    Java8中的流操作-基本使用&性能测试

    并且有了 lambda 的参与,流操作的使用将更加顺畅!...你也见到过了使用 collect 来将流中的所有元素合并成一个 List。 接下来我们来接触更加复杂的一些操作,比如 “挑出单词中长度最长的的单词” 或是 “计算所有单词的总长度”。...为保证测试结果真实可信,我们将 JVM 运行在 -server 模式下,测试数据在 GB 量级,测试机器采用常见的商用服务器,配置如下: 指标 数值 OS CentOS 6.7 x86_64 CPU Intel...GC的行为是Java中很不好控制的一块,为增加确定性,我们手动指定使用CMS收集器,并使用10GB固定大小的堆内存。...我们将订单简化为构成的元组,并用Order对象来表示。测试程序ReductionTest,测试结果如下图: ?

    1K30

    在编程中处理adb命令—App自动化测试与框架实战(10)

    用户创建这些接口的实现类,并把它们加入TestNG中,TestNG 便会在测试运行的不同时刻调用这些类中的接口方法。...下面将介绍控件元素对象类型的区别。   " WebElement可以使用所有的Selenium命令。   ...11.19 区分RemoteWebDriver、AppiumDriver、AndroidDriver和iOSDriver   在Appium自动化测试中,可能有些初学者会对创建什么类型的驱动产生困惑,本节将介绍各个驱动类型的区别...在一些并行测试场景下,要启动多个Appium服务器,如果在代码中未使用driver.quit关闭服务器,或者存在其他一些异常,就会出现会话无法创建的情况。...这一节将详细阐述Appium官方关于Page Object和PageFactory的使用,并通过实例加深对它们的认识,以便在实际使用中对这些概念不会产生疑惑并能灵活地根据需求进行设置。

    1.4K30

    自动化测试中java多线程的使用实例

    本人在学习android UiAutomator和selenium2java的时候,经常与遇到一些跟数据库相关的问题,比如我提交了一个订单,我想从数据库中查询这个订单的信息是否跟预期一致,或者我已经购买过一个课程...,我需要从数据库中删除这条记录,方便我再去购买。...如果对于一条用例来说执行一下sql语句就好了,但是如果对于执行很多用例的话,就不符合自动化的初衷了。所以本人在学习了java多线程之后,进行了一些实践。分享出来,供大家参考。...setkey方法,selenium2java里面可以直接用,android UiAutomator使用起来稍微麻烦一些。...,selenium2java使用也比较简单,android UiAutomator我使用UiAutomatorHelper调试来获取报告的,所以添在调试代码后面了。

    99720

    Java8中的流操作-基本使用&性能测试

    并且有了 lambda 的参与,流操作的使用将更加顺畅!...你也见到过了使用 collect 来将流中的所有元素合并成一个 List。 接下来我们来接触更加复杂的一些操作,比如 “挑出单词中长度最长的的单词” 或是 “计算所有单词的总长度”。...为保证测试结果真实可信,我们将 JVM 运行在 -server 模式下,测试数据在 GB 量级,测试机器采用常见的商用服务器,配置如下: 指标 数值 OS CentOS 6.7 x86_64 CPU Intel...GC的行为是Java中很不好控制的一块,为增加确定性,我们手动指定使用CMS收集器,并使用10GB固定大小的堆内存。...我们将订单简化为构成的元组,并用Order对象来表示。测试程序ReductionTest,测试结果如下图: ?

    1.1K10

    Java自动化测试框架-06 - 来给你的测试报告化个妆整个形 - (下)(详细教程)

    上一篇文章修改了一些基本的ReportNG信息,链接:Java自动化测试框架-05 - 来给你的测试报告化个妆整个形 - (上),本文将继续带大家进行修改,重点是添加饼图,将从普通会员升级到VIP会员。...经过上次的整容恢复的差不多了,宏哥继续带领下伙伴们和同学们折腾,给reportng来个二次开刀。 第一刀 1、修改测试结果顺序,修改TestResultComparator类compare方法 ?...(5)完了宏哥就抱着试一试的心理,把js拷贝到测试报告的文件夹中,再次看测试报告。 ?...(6)饼图出现了,原来是js还是没有被引入,先前做的仅仅是将js引入jar包,而没有引入测试报告,要想引入测试报告还的修改一个地方的代码,仿照上边CSS和JS的引入,如下: ?...(7)再次导出jar包,测试报告的饼图就出现了。 2、好了,关于这个就到这里了。

    54340

    Java自动化测试框架-09 - TestNG之依赖注入篇 (详细教程)

    任何@AfterMethod方法都可以声明ITestResult类型的参数,该参数将反映刚刚运行的测试方法的结果。...任何@DataProvider都可以声明ITestContext或java.lang.reflect.Method类型的参数 。后一个参数将接收将要调用的测试方法。...还将使用该模块获取特定于测试的Guice模块和模块工厂的实例,然后将为每个测试类创建子注入器。通过这种方法,您可以在父模块中声明所有公共绑定,也可以在模块和模块工厂中注入在父模块中声明的绑定。...然后使用构造函数注入将MyContext注入到TestModule类中,该类也声明对MySession的绑定。...然后将测试XML文件中的parent-module设置为ParentModule类,这将启用在TestModule中的注入。

    1.9K30

    Maven test集成TestNG + ExtentReports

    本篇主要讲解在maven项目的单元测试中,如何直接使用mvn test命令来驱动测试代码。...项目结构如下: 现在要做的是,使用 mvn test命令时,可以自动执行test.xml和test2.xml文件两个文件,并使用extentreport自动生成测试报告 ?...,有需要的同学可以做个参考: 1、测试报告路径:根目录/report 2、测试报告的生成结构,具体修改情况可以查看下方的截图 package com.test.config; import com.aventstack.extentreports.ExtentReports...; import java.util.*; public class ExtentTestNGIReporterListener implements IReporter { //生成的路径以及文件名...=0; ExtentTest suiteTest=null; //存在多个suite的情况下,在报告中将同一个一个suite的测试结果归为一类,创建一级节点

    80510

    Appium系列|Appium测试框架完善(三)

    失败重跑监听器使用 当测试脚本有一定数量的情况下,每次执行完所有的测试脚本会发现或多或少的测试脚本执行失败了,失败主要是两种原因一种是源程序bug,另外一种是测试脚本由于各方面的原因执行失败了(如脚本稳定性...、网络环境、机器连接问题等),如果是后一种原因造成的通常再次执行就会测试脚本就会通过,为了减少后期分析自动化执行结果的时间很有必要添加失败重跑逻辑。...正好TestNG提供了个监听器给我们使用,我们现在来具体看下怎么来实现和使用这个监听器。...; import org.testng.ITestResult; public class Retry implements IRetryAnalyzer { //定义重跑的次数 int...(ITestResult iTestResult) { if(index <= retryCount){ index++; return

    59420

    Java自动化测试框架-10 - TestNG之测试结果篇

    您的测试方法通常由可能引发异常的调用或各种断言(使用Java“ assert”关键字)组成。...1.2-日志和结果 测试运行的结果在启动SuiteRunner时指定的目录中的index.html文件中创建。该文件指向包含整个测试运行结果的各种其他HTML和文本文件。...对于每个通过的测试,对于每个失败,都为“ F”,对于每个跳过均为“ S”: /** * @author 北京-宏哥 * * Java自动化测试框架-10 - TestNG之 测试结果篇 *...当用户的测试环境需要使用JUnit格式无法提供的具有TestNG特定数据的XML结果时,此功能特别有用。记者可以通过使用命令行注入TestNG的-reporter。...-reporter选项,也可以将Ant 任务与嵌套的元素一起使用。

    1.5K40
    领券