8.1使用Log4j在测试过程中打印日志

  目的:在测试过程中,使用Log4j打印日志,用于监控和后续调试测试脚本

  被测网页的网址:

  http://www.baidu.com

  环境准备:

  (1)访问https://archive.apache.org/dist/logging/log4j/1.2.17/  下载log4j-1.2.17.jar

  (2)将log4j-1.2.17.jar添加至Eclipse的Build Path中即可

  (3)需在工程根目录新建一个Log4j.xml文件,Log工具类文件和一个测试类文件TestLog4j。

  Java语言版本的API实例代码 

  Log4j.xml的内容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="fileAppender" class="org.apache.log4j.FileAppender">
<param name = "Threshold" value="INFO"/>
<param name = "File" value="logfile.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m %n"/>
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="fileAppender"/>
</root>
</log4j:configuration>

Log工具类的代码如下:

import org.apache.log4j.Logger;

public class Log {
//初始化一个Logger对象
private static Logger Log = Logger.getLogger(Log.class.getName());
//定义一个静态方法,可以打印自定义的,某个测试用例开始执行的的日志信息
public static void startTestCase(String sTestCaseName){
Log.info("------------------------------------------");
Log.info("*********** "+sTestCaseName+" **************");
}
//定义一个静态方法,可以打印自定义的,某个测试用例结束执行的日志信息
public static void endTestCase(String sTestCaseName){
Log.info("***********"+"测试用例执行结束"+"**************");
Log.info("------------------------------------------");
}
//定义一个静态的info方法,打印info级别日志信息
public static void info(String message){
Log.info(message);
}
//定义一个静态warn方法,打印自定义级别warn级别日志信息
public static void warn(String message){
Log.warn(message);
}
//定义一个静态error方法,打印自定义的error级别日志信息
public static void error(String message){
Log.error(message);
}
//定义一个静态fatal方法,打印自定义fatal级别日志信息
public static void fatal(String message){
Log.fatal(message);
}
//定义一个静态debug方法,打印自定义debug级别日志信息
public static void debug(String message){
Log.debug(message);
}
}

TestLog4j测试类代码如下

import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.apache.log4j.xml.DOMConfigurator;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass; public class TestLog4j {
WebDriver driver;
String url = "http://www.baidu.com";
@Test
public void testSearch() {
//向日志文件中打印搜索测试用例开始执行的日志信息
Log.startTestCase("搜索");
driver.get(url);
Log.info("打开百度首页");
//在搜索框中输入seleium
driver.findElement(By.id("kw")).sendKeys("seleium");
Log.info("输入搜索关键字“seleium”");
//单击搜索
driver.findElement(By.id("su")).click();
Log.info("单击搜索按钮");
Log.endTestCase("搜索");
}
@BeforeMethod
public void beforeMethod() {
System.setProperty("webdriver.chrome.driver", "D:\\WebDriver\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize(); } @AfterMethod
public void afterMethod() {
driver.quit();
}
@BeforeClass
public void beforeClass(){
DOMConfigurator.configure("log4j.xml");
}
}

执行结果:

执行测试类之后,会在当前测试工程的根目录生成一个日志文件logfile.log,生成日志如下

代码解释:

(1)日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指这条日志的重要程度

(2)Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)

(3)XML文件中的语句<appender name="fileAppender" class="org.apache.log4j.FileAppender">定义了log4j将日志信息打入日志文件中

(4)xml文件中的语句<param name = "Threshold" value="INFO"/>定义了日志信息的级别为info级别

(5)XML文件中的语句<param name = "File" value="logfile.log"/>定义了日志文件名为logfile.log,日志文件与xml文件在同一文件夹下,若不存在则自动创建此日志文件

(6)XML文件中的语句<param name="ConversionPattern" value="%d %-5p [%c{1}] %m %n"/>定义了日志的格式信息,%d表示打印日志时候的年月日时分秒毫秒信息,%-5p表示日志的级别,%c{1}表示Logger对象的名字(在Log类中定义类名Log作为logger的名字),%m表示打印具体的日志内容,%n表示打印一个回车

WebDriver高级应用实例(8)的更多相关文章

  1. WebDriver高级应用实例(10)

    10.1控制HTML5语言实现的视频播放器 目的:能够获取html5语言实现的视频播放器视频文件的地址.时长.控制进行播放暂停 被测网页的网址: http://www.w3school.com.cn/ ...

  2. WebDriver高级应用实例(9)

    9.1封装操作表格的公用类 目的:能够使自己编写操作表格的公用类,并基于公用类进行表格中的元素的各类操作 被测网页的网址的HTML代码: <html> <body> <t ...

  3. WebDriver高级应用实例(7)

    7.1在测试中断言失败的步骤进行屏幕截图 目的:在测试过程中,在断言语句执行失败时,对当前的浏览器进行截屏,并在磁盘上新建一个yyyy-mm-dd格式的目录,并在断言失败时新建一个已hh-mm-ss格 ...

  4. WebDriver高级应用实例(6)

    6.1精确比较网页截图图片 目的:对于核心界面进行截屏,并且使用测试过程中的截图和以前测试过程中的截图进行比较.确认页面是否发生了改变 被测网页的网址: http://www.baidu.com Ja ...

  5. WebDriver高级应用实例(5)

    5.1对象库(UI Map) 目的:能够使用配置文件存储被测试页面上的元素的定位方式和定位表达式,做到定位数据和程序的分离.方便不具备编码能力的测试人员进行修改和配置. 被测网页的网址: http:/ ...

  6. WebDriver高级应用实例(4)

    4.1操作web页面的滚动条 被测网页的网址: http://v.sogou.com Java语言版本的API实例代码 import org.testng.annotations.Test; impo ...

  7. WebDriver高级应用实例(3)

    3.1自动化下载某个文件 被测网页的网址: https://pypi.org/project/selenium/#files Java语言版本的API实例代码 import java.util.Has ...

  8. WebDriver高级应用实例(2)

    2.1在日期选择器上进行日期选择 被测网页的网址: https://www.html5tricks.com/demo/Kalendae/index.html Java语言版本的API实例代码 impo ...

  9. WebDriver高级应用实例(1)

    1.1使用JavaScriptExecutor单击元素 被测网页的网址: http://www.baidu.com Java语言版本的API实例代码 import org.testng.annotat ...

随机推荐

  1. 2018.11.06 洛谷P1099 树网的核(最短路+枚举)

    传送门 之前看李煜东的书一直感觉是道神题. 然后发现这题数据范围只有300?300?300? 直接上floydfloydfloyd然后暴力就完了啊. 代码: #include<bits/stdc ...

  2. 2018.11.01 NOIP训练 木棒分组(搜索+剪枝)

    传送门 测试搜索的时候状态定义错了233. 我们把木棒从大到小排序. 然后保证每一组搜到的木棒出现的长度是从大到小递减的. 直接定义现在搜的木棒从什么位置开始,当前这一组的总长度,之前几组的总长度. ...

  3. 百度api接口_知识积累

    app_id, app_key, app_secret app_id 是用来标记你的开发者账号的, 是你的用户id, 这个id 在数据库添加检索, 方便快速查找 app_key 和 app_secre ...

  4. hashchange事件

    h5新增了hashchange事件,以便在URL参数列表(及URL中‘#’号后面的所有字符串),发生变化时通知开发人员. 之所以要添加这个事件,是因为在Ajax应用中,开发人员经常要利用URL参数列表 ...

  5. Windows下用curl命令

    一开始自己是下载curl的可执行文件来弄的,发现中文会乱码: 按照网上的用chcp 65001后中文还是乱码,蒙逼中. 后来直接用git bash执行curl,发现git bash自带了这个命令:(可 ...

  6. HTML上传文件支持大文件上传,下载

    上传 1.修改配置文件web.config,在<system.webServer>下面加入 <security> <requestFiltering > <r ...

  7. 【设计模式】Javascript设计模式——状态模式(行为型)

    注:这个模式是非常聪明的,很有点数学中组合的意思,现在,来看下这个模式是怎么个思想. 问题提出:假如某个操作有三种可能,分别为1,2,3,还可能是组合,比如先执行1,再执行2或者先执行2再执行3或者1 ...

  8. AI模型训练/算法评估 测试员

  9. Android 获取高度宽度为0的时候的处理

    转自http://my.oschina.net/xiahuawuyu/blog/167949 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例: 首先我们自己写一 ...

  10. Java包、权限访问修饰符、封装性

    包 概念: 物理上是文件夹:逻辑上是有逻辑关系的类的集合 作用: 避免类重名:控制访问权限 命名规范: 在包名中,可以使用.号来区分包的级别:包名一般情况下是小写 第一级 指该项目的类型,如com,o ...