WebDriver应用实例(java)——测试过程使用Log4j打印日志

        这个实例的作用是,在测试过程中,使用Log4j在日志文件中打印日志,用于监控和后续调试测试脚本。

        具体过程:

        1、自行下载Log4j的包,此处用的是log4j-1.2.17.zip。

        2、解压缩包,把解压缩后的jar包添加到eclipse的工程的Build Paht中即可。

        3、在测试代码的工程的src同级创建并设置log4j.properties,内容如下:

### 设置###
log4j.rootLogger = debug,D,E,info

### 输出信息到控制抬 ###
#log4j.appender.stdout = org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target = System.out
#log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=F:\workspace\WebDriver API\log\\logerror.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = F://workspace/WebDriver API/log/loglog.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%c-%L]-[%p] %m%n
                                            

### 输出ERROR 级别以上的日志到=F:\workspace\WebDriver API\log\\logerror.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =F://workspace/WebDriver API/log/logerror.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%c-%L]-[%p] %m%n


### 输出info 级别以上的日志到=F:\workspace\WebDriver API\log\\loginfo.log ###
log4j.appender.info = org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.File =F://workspace/WebDriver API/log/loginfo.log 
log4j.appender.info.Append = true
log4j.appender.info.Threshold = INFO 
log4j.appender.info.layout = org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%c-%L]-[%p] %m%n

        配置具体解析:

        (1)、log4j.rootLogger = level  , appenderName, appenderName, …
           其中lelve是定义的输出级别,低于该级别的将不会输出,主要级别有OFF、ALL、FATAL、ERROR、WARN、INFO、DEBUG或自定义级别,其中OFF设定的话将不输出任何信息,ALL设定的话将输出所有信息;另外5个的级别FATAL>ERROR>WARN>INFO>DEBUG,如果你的lenel设定为INFO,那么不能输出DEBUG信息;
            appenderName是指定日志信息输出到哪个地方,控制台,文件等等,可同时指定多个输出目的地。
        (2)、log4j.appender,这个也是必须配置的,它是负责控制日志记录操作的输出。它的定义格式如下:
            log4j.appender.appenderName=someAppender(选择一种输出平台)
            log4j.appender.appenderName.File=文件名](文件输出定义路径)
            log4j.appender.appenderName.layout=输出布局
            log4j.appender.appenderName.layout.ConversionPattern=输出格式

        其中log4j.appender.appenderName指定输出appender,Log4J提供了一下几种appender:
        a),org.apache.log4j.ConsoleAppender(控制台)
        b),org.apache.log4j.FileAppender(文件)
        c),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
    d),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件,可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过log4j.appender.R.MaxBackupIndex=1设置为保存一个备份文件)。
        e),org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

        log4j.appender.appenderName.layout指定日志信息的格式(布局)Layout,它负责格式化Appender的输出。Log4j提供的layout有以下几种:
        org.apache.log4j.HTMLLayout(以HTML表格形式布局)
        org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
        org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
        org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)。

log4j.appender.appenderName.layout.ConversionPattern格式化日志信息,Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
        %m 输出代码中指定的消息
        %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
        %r 输出自应用启动到输出该log信息耗费的毫秒数
        %c 输出所属的类目,通常就是所在类的全名
        %t 输出产生该日志事件的线程名
        %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
      %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2012年06月24日 23:55:28,92
        %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

        (3),log4j.logger
        这个不是必需的,如果不配置这个,则采用log4j.rootLogger的level级别。它主要是具体到package、Class级别的info,它的定义格式如下:
        log4j.logger.packageName[.ClassName]=level[,appender]

        它也可以输出到指定的appender,也可以不指定输出到默认appender。


        4、定义一个Log工具类,内容如下:

package cn.om.log4j;

import org.apache.log4j.Logger;

public class Log {
	//初始化一个logger对象
    private static Logger Log=Logger.getLogger(Log.class);
    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);
    }
}

        5、建一个测试类TestSearch,内容如下:

package cn.om.log4j;

import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;

public class TestSearch {

	WebDriver driver;
	String url = "http://www.sogou.com";

	@Test
	public void testSearch() {
		Log.startTestCase("搜索");
		driver.get(url);
		//打印“打开sogou首页”的日志信息
		Log.info("打开sogou首页");
		//在搜索框中输入“光荣之路自动化测试”
		driver.findElement(By.id("query")).sendKeys("光荣之路自动化测试");
		Log.info("输入搜索关键字“光荣之路自动化测试”");
		//单击“搜索”按钮
		driver.findElement(By.id("stb")).click();
		//打印“单击搜索按钮”的日志信息
		Log.info("单击搜索按钮");
		Log.error("错误");
		//向日志文件中打印搜索测试用例执行结束的日志信息
		Log.endTestCase("搜索");
	}

	@BeforeMethod
	public void beforeMethod() {
		System.setProperty("webdriver.firefox.bin", "D:/Mozilla Firefox/firefox.exe");
		driver = new FirefoxDriver();
		url = "http://www.sogou.com";
	}

	@AfterMethod
	public void afterMethod() {
		driver.quit();
	}
}

        日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,用来标记这条日志的重要程度。Log4j支持两种配置文件格式,一个是XML格式,一个是java特性文件(就是本文的格式),xml文件格式不另外介绍了。


猜你喜欢

转载自blog.csdn.net/vikeyyyy/article/details/80222737
今日推荐