RFDoc是一個讓你可以將所有的Keyowrd文件集中管理的Web應用程式。對於一個Team的開發人員來說,除了透過瀏覽各個Keyword文件外,也可以透過搜尋功能去知道目前專案中有哪些既有的Keyword可以用。這篇文章除了教你如何安裝使用RFDoc外,還會分享給你自動匯入文件到RFDoc的方式。
RFDoc使用Django為Web的Framework並以sqlite3為資料庫。我分為兩部分做介紹,一個以Django做為Web Server,一個是以Apache做為Web Server。(官網的教學實在令我覺得OOXX,照著它做8成以上不能work)
Django提供的Web Server目的是為了開發與測試使用,但如果只是拿來跑RFDoc也無妨吧!
apt-get install python-django
python setup.py install
python src/rfdoc/manage.py syncdb
python src/rfdoc/manage.py runserver 0.0.0.0:8000
如果要重新初始化RFDoc使用的database,可以執行
python src/rfdoc/manage.py reset rfdocapp
它是透過WSGI的interface讓Apache Web Server去存取RFDoc。除了要安裝Django的部分,還要做以下安裝:
sudo apt-get install apache2
sudo apt-get install libapache2-mod-wsgi
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']
WSGIScriptAlias / /opt/tmp/rfdoc-0.2/src/rfdoc/rfdoc.wsgi
chown www-data:www-data /tmp/rfdoc.db
由於RFDoc程式碼都是使用Web Root的方式去存取,目前還在尋找可以讓它透過其它URL存取的方式。(主因是它網頁的寫法都會存取URL的Root)
它UI設計非常簡單,底下是我匯入Keyword文件後的Screenshot:
如果你想把Robot Builtin的Library也匯進去,就必須要下載它的source code,由source code去產生。
當每次改完Robot後,就要手動去產生文件並上傳至RFDoc。如果只有改一兩個檔案還好,如果一次改很多且又在不同的資料夾呢? 我光第一次要匯入10來個檔案就懶了,索性寫一個script替我解決問題。主要有兩個需要知道的:
先前介紹過產生Robot文件的方法了。主要是透過-f XML的參數:
libdoc.sh -f XML example.html example.xml
這個範例就是將library檔案example.html匯入為文件檔案example.xml。
透過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。所以,
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後,持續整合系統就會替你搞定這些事情啦! 你再也不用手動去做這些事情了!