1、利用Testng的Reporter类
java代码:
打开Testng生成的html报告 :(在项目目录 下)
2、用Log4 j实现日志输出
1、导入log4j-1.2.15.jar
2、新建一个Log4j.properties文件,并设置成utf-8编码格式,编辑内容如下:
log4j.rootLogger=INFO,CONSOLE,R,HTML,TTCC
// 定义一个appender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.TTCC=org.apache.log4j.RollingFileAppender
log4j.appender.HTML=org.apache.log4j.FileAppender
// 定义log文件保存路径,三种日志文件格式
log4j.appender.R.File=./Log/testlog.log
log4j.appender.TTCC.File=./Log/testlog1.log
log4j.appender.HTML.File=./Log/application.html
// 定义layout和pattern
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= %5p [%t] (%F:%L)- %m%n
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d - %c -%p - %m%n
log4j.appender.TTCC.layout=org.apache.log4j.TTCCLayout
log4j.appender.TTCC.layout.DateFormat=ISO8601
log4j.appender.HTML.layout=org.apache.log4j.HTMLLayout
log4j.appender.HTML.layout.Title=Application log
log4j.appender.HTML.layout.LocationInfo=true
3、新建一个Log文件夹
4、java代码如下:
运行成功了,Log文件夹下面有新生成的日志文件
3、纯java方式实现日志输出
目录结构:
Logger.java代码:
package Framwork;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Logger {
public static String OutputFileName=getDateTimeByFormat(new Date(),"yyyyMMdd_HHmmss");
private static OutputStreamWriter outputStreamWriter;
private static String logFileName;
public static boolean LogFlag=true;
//构造函数
public Logger() {}
private static void WriteLog(String logEntry) {
try {
logFileName=".\\Log"+"\\"+OutputFileName+".log";
if(outputStreamWriter==null) {
File logFile=new File(logFileName);
if(!logFile.exists()) {
logFile.createNewFile();
}
outputStreamWriter=new OutputStreamWriter(new FileOutputStream(logFileName),"utf-8");
}
outputStreamWriter.write(logEntry,0,logEntry.length());
outputStreamWriter.flush();
}catch(Exception e) {
System.out.println(LogType.LogTypeName.ERROR.toString()+":Failed to write the file"+logFileName);
e.printStackTrace();
}
}
private static String getDateTimeByFormat(Date date,String format) {
SimpleDateFormat df=new SimpleDateFormat(format);
return df.format(date);
}
public static void Output(LogType.LogTypeName logTypeName,String logMessage) {
Date date=new Date();
String logTime=getDateTimeByFormat(date,"yyyy-MM-dd HH:mm:ss.SSS");
String logEntry=logTime+""+logTypeName.name()+":"+logMessage+"\r\n";
System.out.print(logEntry);
if(LogFlag) {
WriteLog(logEntry);
}
}
}
LogType.java代码:
package Framwork;
public class LogType {
public LogType() {}
public enum LogTypeName{
//
INFO,
//
ERROR,
//
WARNING,
//
DEBUG;
}
}
Testbaidu.java代码:
package testSuite;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import Framwork.Logger;
import Framwork.LogType;
public class Testbaidu {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", ".\\drivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
logger.Output(LogType.LogTypeName.INFO,"启动chrome浏览器");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
logger.Output(LogType.LogTypeName.INFO,"隐式等待10秒");
driver.get("https://www.baidu.com");
logger.Output(LogType.LogTypeName.INFO,"打开百度首页");
driver.findElement(By.id("kw")).sendKeys("selenium");
logger..Output(LogType.LogTypeName.INFO,"在搜索框输入selenium");
}
}
运行成功,Log4j方式最好
如果你想丰富的日志输出,你就用Log4j,Lo4j有一个小问题就是,不太方便设置日志文件名称是当前系统的时间,所以,log4j前面写死了日志名称,每次执行都会覆盖之前的日志。但是本篇用java打印日志的方法就不会发生这样情况,每次自动化运行都有日志保存,方便追溯错误。