java的ui自动化测试框架_基于Java+Selenium的WebUI自动化测试框架(三)------记录LOG...

在有了Position类和接口类之后,我们是不是立刻就要着手开始写实现类了呢?按照一般的顺序是这样。但是,我们这里先停一下。原因有二:

1)既然是写一个框架,我们希望总体的功能上是全面的。实现类中,我们需要设计和实现各种具体的操作方法。那么,如果中间出了问题,我们希望能够有所记录(log),所以需要有一个Log类。

2)既然是需要记录,我们希望能够在每次测试的测试报告中,体现该次测试操作的记录。那么,就需要对所做的测试进行监听,所以我们也需要一个监听(Listener)的类。

在写log类之前,我们需要在项目中导入log4j的jar包,具体的下载地址:https://mvnrepository.com/artifact/log4j/log4j

在导入log4j-1.2.17.jar的包后,我们开始着手写Log类。

packagewebui.xUtils;importjava.io.File;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Properties;importorg.apache.log4j.Logger;importorg.apache.log4j.PropertyConfigurator;public classlogUtil {private final Class>clazz;privateLogger logger;//这里是定义logUtil的构造函数,因为不明确需要记录log的类是什么样子的,所以使用泛型Class> clazz

public logUtil(Class>clazz) {this.clazz =clazz;this.logger = Logger.getLogger(this.clazz);

logUtil.initlog4j();

}//定义记录log的方法

private static voidinitlog4j() {//创建Propderties对象

Properties prop = newProperties();/*Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG

这里定义能显示到的最低级别,若定义到INFO级别,则看不到DEBUG级别的信息了~!级别后面是输出端*/prop.setProperty("log4j.rootLogger", "INFO,CONSOLE,E,F");

prop.setProperty("log4j.appender.CONSOLE", "org.apache.log4j.ConsoleAppender");

prop.setProperty("log4j.appender.CONSOLE.layout", "org.apache.log4j.PatternLayout");

prop.setProperty("log4j.appender.CONSOLE.layout.ConversionPattern", "[%d{YYYY-MM-dd HH:mm:ss,SSS}] %-5p %c %m%n");//设置日志输出的路径String src= "test-output/log";//设置日期格式

SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");//获取当前日期,并根据当前的日期建立文件夹,将生成的.log文件放入当前日期的文件夹。

String date=dateFormat.format(newDate()).toString();

File dir= new File(src+"/"+date);if (!dir.exists()){

dir.mkdirs();

}

String filepath=dir.getAbsolutePath()+"/"+"log_"+date+".log";

prop.setProperty("log4j.appender.E","org.apache.log4j.FileAppender");

prop.setProperty("log4j.appender.E.file",filepath);

prop.setProperty("log4j.appender.E.layout","org.apache.log4j.PatternLayout");

prop.setProperty("log4j.appender.E.layout.ConversionPattern", "[%d{YYYY-MM-dd HH:mm:ss,SSS}] %-5p %c %m%n");

prop.setProperty("log4j.appender.F","org.apache.log4j.FileAppender");

prop.setProperty("log4j.appender.file.encoding","UTF-8");//生成Html格式的日志,并将生成的.html的日志文件放入当前日期的文件夹。

String filepathHtml=dir.getAbsolutePath()+"/"+"log_"+date+".html";

prop.setProperty("log4j.appender.F.file",filepathHtml);

prop.setProperty("log4j.appender.F.layout","org.apache.log4j.HTMLLayout");//prop.setProperty("log4j.appender.F.layout.ConversionPattern", "[%d{YYYY-MM-dd HH:mm:ss,SSS}] %-5p %c %m%n");PropertyConfigurator.configure(prop);

}public voidinfo(String message) {

logger.info(message);

}public voiddebug(String message) {

logger.debug(message);

}public voiderror(String message) {

logger.error(message);

}public voidtrace(String message) {

logger.trace(message);

}

}

到此,log类就算完成了。在使用的时候,直接定义一个实例来调用相应的方法即可。例如: logUtil logs = new logUtil(X.class);

另外,除了logUtil中定义的样式,在需要记录的地方,可以调用该类中相应的方法,比如logs.info("测试开始"),那么在执行相应程序的时候,这段话就会被记录在log文件中。这样,就方便我们自己定义log的内容了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值