如何將測試程式的執行步驟記錄下來並且輸出為HTML?
這篇文章主要介紹一個小技巧可以將測試程式執行的過程,
透過Log的方式記錄下來,並且將該Log輸出為HTML。這裡主要透過Log4j來完成這件工作。
下載Log4j
http://mirrors.ibiblio.org/pub/mirrors/maven/log4j/jars/log4j-1.2.15.jar
Add Log4j
如果是使用 Eclipse的話,Build Path > “Configure Build Path“.
Add External Jars > 選取 “log4j-1.2.15.jar”
定義log4j.properties
這個檔案用來定義Log 相關的格式、內容與存放檔名。
[pastacode lang=”java” message=”log4j.properties” highlight=”” provider=”manual”]
log4j.rootLogger=INFO,HTML
log4j.appender.HTML=org.apache.log4j.FileAppender
log4j.appender.HTML.File=./log/testlog.html
log4j.appender.HTML.layout=org.apache.log4j.HTMLLayout
log4j.appender.HTML.layout.Title=Application log
log4j.appender.HTML.layout.LocationInfo=true
[/pastacode]
Log4J的輸出
透過log4j.properties,我們可以定義哪些資訊內容要輸出到 log.例如 information , warning, error等。
範例程式如下
[pastacode lang=”java” message=”” highlight=”” provider=”manual”]
import org.apache.log4j.Logger;
public class LogLevelClass {
private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
public static void main(String[] args) {
log.trace("Trace Message!");
log.debug("Debug Message!");
log.info("Info Message!");
log.warn("Warn Message!");
log.error("Error Message!");
log.fatal("Fatal Message!");
}
}
[/pastacode]
Log4J Selenium 範例程式
接著就可以在Java 程式中使用 Log4j,範例程式如下:
[pastacode lang=”java” message=”Selenium log4j sample” highlight=”” provider=”manual”]
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Log4j {
public static void main(String[] args) {
// Here we need to create logger instance so we need to pass Class name for
//which we want to create log file in my case Google is classname
Logger logger=Logger.getLogger("Selenium Google Search");
// configure log4j properties file
PropertyConfigurator.configure("Log4j.properties");
// Open browser
WebDriver driver = new FirefoxDriver();
logger.info("Launch FireFox");
// Set implicit wait
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
logger.info("Define Implicit Wait for 10 sec");
// Load application
driver.get("https://www.google.com/");
logger.info("Visit WWW.google.com");
// type Selenium
WebElement search = driver.findElement(By.name("q"));
search.sendKeys("Selenium");
logger.info("Send keys with 'Selenium'");
search.submit();
logger.info("submit the search");
logger.warn("This is warning message test");
logger.error("This is error message test");
}
}
[/pastacode]
輸出的Log 檔案
最後檔案會就輸出在 \log\testlog.html
如下圖所示:
如果我們只希望輸出 warning and Error 的相關 log ,而不希望輸出info 的log 要如何做呢?
這時候我們只需要修改log4j.properties,將info 改為WARN 即可。
log4j.rootLogger=WARN,HTML
透過log4j,可以讓我們對於程式的 log輸出最更有效率的運用。