Introduction
RFDoc是一個讓你可以將所有的Keyowrd文件集中管理的Web應用程式。對於一個Team的開發人員來說,除了透過瀏覽各個Keyword文件外,也可以透過搜尋功能去知道目前專案中有哪些既有的Keyword可以用。這篇文章除了教你如何安裝使用RFDoc外,還會分享給你自動匯入文件到RFDoc的方式。
Install and Setup
RFDoc使用Django為Web的Framework並以sqlite3為資料庫。我分為兩部分做介紹,一個以Django做為Web Server,一個是以Apache做為Web Server。(官網的教學實在令我覺得OOXX,照著它做8成以上不能work)
Django Web Server
Django提供的Web Server目的是為了開發與測試使用,但如果只是拿來跑RFDoc也無妨吧!
- 安裝Djando:
apt-get install python-django
- 下載rfdoc並解壓縮,我解壓縮至/usr/src/rfdoc-0.2。
- 建置與安裝: 至安裝目錄下執行以下指令,會產生src的資料夾,
python setup.py install
- 設置DB:
python src/rfdoc/manage.py syncdb
- 啟動: 可根據需求決定要使用的port,
python src/rfdoc/manage.py runserver 0.0.0.0:8000
如果要重新初始化RFDoc使用的database,可以執行
python src/rfdoc/manage.py reset rfdocapp
Apache Web Server
它是透過WSGI的interface讓Apache Web Server去存取RFDoc。除了要安裝Django的部分,還要做以下安裝:
它是透過WSGI的interface讓Apache Web Server去存取RFDoc。除了要安裝Django的部分,還要做以下安裝:
- 安裝apache:
sudo apt-get install apache2
- 安裝wsgi模組:
sudo apt-get install libapache2-mod-wsgi
- 產生wsgi檔: 直接使用Template,
cp /usr/src/rfdoc-0.2/src/rfdoc/rfdoc.wsgi.tmpl /usr/src/rfdoc-0.2/src/rfdoc/rfdoc.wsgi
加入src/rfdoc的路徑到PATHS中,PATHS = ['/usr/src/rfdoc-0.2/src/rfdoc']
- 設定檔: 新增對rfdoc的apache設定擋,
WSGIScriptAlias / /opt/tmp/rfdoc-0.2/src/rfdoc/rfdoc.wsgi
- 修改資料庫存取權限: 目的是要讓apache有rfdoc資料庫存取的權限,
chown www-data:www-data /tmp/rfdoc.db
由於RFDoc程式碼都是使用Web Root的方式去存取,目前還在尋找可以讓它透過其它URL存取的方式。(主因是它網頁的寫法都會存取URL的Root)
How to use?
它UI設計非常簡單,底下是我匯入Keyword文件後的Screenshot:
- 右上角的Upload: 提供讓你上傳文件的功能。上傳的文件是透過Robot提供的libdoc工具所產生,必須為xml格式,可以參考先前提過產生文件的方法。
- Search Keywords區塊: 提供你搜尋這些文件的功能。假如你不知道Team Members是否做了某個Keyword,不妨輸入些關鍵字試試看。如果它命名成K1、K2、K3,就去找你的Team membe吧。
- Libraries區塊: 列出系統中現有的文件,可以直接參考官網Screenshot。
如果你想把Robot Builtin的Library也匯進去,就必須要下載它的source code,由source code去產生。
Automatic Gen&Upload
當每次改完Robot後,就要手動去產生文件並上傳至RFDoc。如果只有改一兩個檔案還好,如果一次改很多且又在不同的資料夾呢? 我光第一次要匯入10來個檔案就懶了,索性寫一個script替我解決問題。主要有兩個需要知道的:
- 如何產生xml的Keyword文件?
- 如何透過script上傳至RFDoc?
產生XML的Document
先前介紹過產生Robot文件的方法了。主要是透過-f XML的參數:
libdoc.sh -f XML example.html example.xml
這個範例就是將library檔案example.html匯入為文件檔案example.xml。
上傳至RFDoc
透過Linux的CURL工具讓我可以透過script上傳文件:
OUTPUT_FILE=/tmp/rf_doc/example.xml RFDOC_URL=http://192.168.1.113 curl --form file=@$OUTPUT_FILE \ --form override=on $RFDOC_URL/upload > /dev/null 2>&1
主要有兩個重要的參數: file為上傳檔案的本機路徑,override為是否要覆蓋資料。
摻在一起做懶人腳本
我的需求就是能夠將多個資料夾中的Robot Libraries檔案變成文件,並上傳至RFDoc。所以,
- 透過變數RFLIB_FOLDERS記錄我有哪些資料夾放著這些Libraries,以逗號(,)分開。
- 設置IFS為逗號(,),Loop變數RFLIB_FOLDERS。
- 取得各個資料夾中html結尾的檔案。
- 取得檔案名稱並執行libdoc匯出同名的xml文件。
- 最後透過curl上傳至RFDoc。
script如下:
#!/bin/bash BASE=`dirname "$0"` LIBDOC_CMD=$BAE/libdoc.sh OUTPUT=$BASE/doc RFDOC_URL=http://192.168.1.113 RFLIB_FOLDERS=("$BASE/../libs","$BASE/../testcases") if [ ! -e $OUTPUT ]; then mkdir $OUTPUT fi IFS=$',' for folder in ${RFLIB_FOLDERS[@]}; do for file in $folder/*.html; do filename=`basename "$file" | cut -d'.' -f1` OUTPUT_FILE=$OUTPUT/$filename.xml $LIBDOC_CMD -f XML "$file" "$OUTPUT_FILE" curl --form file=@$OUTPUT_FILE \ --form override=on $RFDOC_URL/upload > /dev/null 2>&1 done done
最後就是將這些東西放入build script中。當你commmit code後,持續整合系統就會替你搞定這些事情啦! 你再也不用手動去做這些事情了!
History
- 2013-09-10 在更換新版本robot後,RFDoc發生DB Table找不到的問題。主要原因猜測不能使用舊版本的robot jar檔去產生document,在更新產生document用的robotframework jar檔後,執行src/rfdoc/manage.py syncdb去清空資料庫。
留言
張貼留言