Linux+jenkins+python+svn自動化測試集成之路

Linux+jenkins+python+svn自動化測試集成之路

一:背景介紹

背景1—個人基礎

本機win7上安裝pycharm,使用python搭建API自動化測試框架,本地運行Pass。本機上搭建jenkins,創建測試任務,定時構建Pass。

背景2—公司實際

jenkins和python都是搭載linux系統服務器上,python腳本存放在svn上。在背景1的前提下,往背景2跳躍,我以為只是一小步。挪一個環境而已,對linux基礎命令還算熟悉,於是開始一天的探坑之路。

Linux+jenkins+python+svn自動化測試集成之路

二:第一階段:盲目試水

盲目試水,覺得把腳本里路徑改成svn就OK了。

1、修改conf中的項目路徑為:http://****.cn/svn/*API_Autotest,上傳到svn上。

2、jenkins上新建自由風格任務,源碼管理選擇svn路徑同上,添加賬號憑證信息。

構建步驟添加執行shell命令:python run.py。然後應用—保存。

3、最後一步,正式驗證是否成功,返回,點擊“立即構建”。

結果可想而知,華麗麗地失敗了,也不指望一次成功。調出控制檯輸出,workspace裡沒有找到這個工程文件,意料之中。第二次,仍然失敗,run.py裡第一步是從配置文件中讀取section對應值,報錯提示KEY_Error,反覆檢查配置文件和腳本,無果。

Linux+jenkins+python+svn自動化測試集成之路

瘋狂百度,相信萬能的度娘,總能找到類似的情況吧。百度了n篇文章。並沒有找到一樣背景的情況:linux+jenkins+python+svn。

大都是搭建測試環境,部署項目Java代碼的,但也不能說全無收穫,確實發現了幾個關鍵點:

1、linux一般自帶python2.7,但我用的是python3.4,需要去升級服務器上的python版本,至於怎麼在linux上升級python到3。網上文章一堆一堆的,看了兩三篇,差不多,於是要來搭建jenkins的服務器(公司服務器太多)賬號密碼。

開始用下面命令安裝,需要sudo -i 臨時切換到root權限,預想是python2.7和3.4共存。

最後把默認軟鏈接指向python3:wget https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz #下載資源包 tar -zxvf Python-3.4.1.tgz #解壓 cd Python-3.4.1/ #進入解壓後的目錄 ./configure #配置 make & make install #編譯&安裝 python3 #無報錯則成功。

Linux+jenkins+python+svn自動化測試集成之路

驗證幾次失敗,百度對應的報錯後,解決掉了不提。然後安裝完沒有報錯了,還是驗證不通過,於是直接找開發小姐姐幫忙看,過一會兒,她說好了可以用了。怎麼解決的呢?

小姐姐的回覆是:把python2的卸掉了,啟動路徑替了一下。應該也可以並存的,改一下環境變量就行。但是小姐姐直接卸了和百度裡說卸掉自帶的2版本可能影響其他地方,就先不管了。

2、jenkins裡pyenv插件可以指定python版本,不知道跟1是不是重複了。不管三七二十一,先去插件管理裡下一個再說,用不上也沒關係嘛。

1、2全部解決了,再次構建,仍是失敗,報錯信息,NO SECTION,也就是說讀取配置文件仍然失敗。反反覆覆在jenkins上構建也沒啥意義了,還是先到本機上調試看看。

四:第三階段:自己調試+諮詢大佬

第三階段:百度已無方向,返回自己調試+諮詢大佬,意外收穫到pycharm+svn用法。

1、在讀取配置文件的腳本main函數下,配置文件路徑嘗試svn路徑,結果顯示一大串配置提示錯誤。百度pycharm裡svn配置後發現居然還可以從svn代碼倉庫裡導出腳本,編輯修改後右鍵直接commit,太方便了,這個以後可以一直用下去。

2、解決了pycharm裡svn配置問題,重新開始嘗試了讀取svn路徑配置文件,同樣報錯。本地的可運行成功,那問題就在路徑上了。針對性地諮詢了下測試大佬,果然,配置文件不能請求遠程的文件,要加上一步拉到本地的操作。而jenkins在構建任務時會自動把svn上的代碼下載到本地的workspace裡。所以conf裡配置文件中的project_path不能寫svn路徑,而是搭建jenkins的那臺服務器上的workspace路徑。

可能因為太細節太小了,跟喝水不能太燙一樣,百度裡很默契的都沒提及,這是我認知中的一個盲點,於是,摔倒了半天還爬不起來。

3、大方向問題解決了,再次構建,仍是failure,報錯,仍是路徑錯誤,大佬建議先在服務器上嘗試能否運行成功。這是一個好辦法,先把py腳本一個一個地在服務器上調通再看。

Linux+jenkins+python+svn自動化測試集成之路

並且百度裡關於linux下python運行報錯的文章一堆一堆的,我碰到的如下:

NO Moudle Named Requests: 那就去linux上pip install requests (ddt、openpyxl、configparser同理)

NO Moudle Named HTMLTestRunnerNew: 那就打開secureFX。丟個HTMLTestRunnerNew.py到python安裝目錄lib下。

NO Moudle Named common:那就在每個py文件起始位置加上一段:

import os,sys curPath = os.path.abspath(os.path.dirname(file)) rootPath = os.path.split(curPath)[0] sys.path.append(rootPath)

至此,服務器上運行順利通過。

最後,再次在jenkins構建,順利通過,花了快一天的時間。留下此文總結紀念。


分享到:


相關文章: