這是本文件的舊版!


RobotFramework - How to trace the exception of java keyword library?

使用java based開發robot keyword的人,大都會遇到發生非預期例外時,不知道root cause在哪,因為你拿到的訊息通常如下:


今天在review前同事的東西時,就遇到了這個問題! 我將分享兩個方法給大家,該如何去拿到詳細的callstack或message。

我分享兩個方法給大家。

Run with debug mode

在不修改任何程式碼的情況下,請將以下參數加到你Robot啟動參數中:

--loglevel DEBUG
以我的ride為例,會像這樣子:


假如有問題的程式再執行一次,就能看到以下內容:


有了這個callstack以後,相信可以幫助你減少許多追蹤問題的時間。

Catch exception and apply logger

前面的方式適用於問題容易被重現的情況,假如你是偶爾發生問題,就要考慮預先把例外捕捉起來且做Log。在透過java開發robot keyword時,如果你使用以下寫法,會被當作INFO level:

System.out.println(e.getMessage());
INFO level預設情況下,是可以讓你在報表中看到你想要呈現的結果(callstack or exception message);但語意是不是怪怪的呢? 上面那個寫法,等效於:
System.out.println("*INFO* " + e.getMessage());
如果你要讓語意清楚點,可以選擇寫成這樣:
System.out.println("*WARN* " + e.getMessage());
System.out.println("*ERROR* " + e.getMessage());
這個logger方式,可以放在你catch exception後,將callstack或者message印出。假如嫌這個寫法不夠漂亮,更進一步,你可以考慮與log4j或者是java Logger api做整合。