DJANGO+PYTHON+SELENIUM實現版本釋出後,呼叫自動化指令碼來驗證釋出釋出環境
阿新 • • 發佈:2018-12-26
背景:公司在釋出版本的時候,需要維護幾百臺伺服器,往每個伺服器上面部署相同的應用。釋出完成後,需要測試對每個環境進行相同的環境,目前的測試驗證是手工進行的。最近公司要實現這麼個功能,讓我自動化處理環境驗證,並且要保證效率(就是併發咯),執行完成後把結果傳送給相關人員。釋出版本的時候,會存在分批次釋出的問題(幾百臺伺服器分幾天釋出),這樣執行驗證的時候,需要預先知道運維到底釋出了哪些環境。
需要實現的功能:1、實現自動話驗證 2、接收運維傳遞的伺服器引數,解析為伺服器的訪問url 3、環境太多,線性執行效率太低,考慮多執行緒 4、ui自動化存在不穩定問題,第一次失敗的環境需要重新執行 5、執行結果通過郵件傳送給相關人員。
理清需要實現的功能後,跟運維溝通,運維傳遞伺服器資訊的時候 是以url格式傳遞給我,伺服器資訊拼接在url後面,以逗號分割。我這邊部署一個web服務,接收到url請求後,解析url,把伺服器資訊轉變為url資訊,解析後的url資訊傳遞給執行指令碼。解決這個後,基本就沒什麼問題了
多執行緒併發。使用了threading
threads=[] nloops=range(len(loops)) count=0 drs=[] urls=[] for i in range(len(loops)): login(i,drs,loops,count,urls) count=count+1 for i in drs: t=threading.Thread(target=loop,args=(i,)) threads.append(t) for i in nloops: threads[i].start() for i in nloops: threads[i].join()
關於threading控制執行緒數的問題,因為伺服器有幾百臺,如果不控制執行緒數量,效能方面會有問題,所以線上程外面,切割伺服器分組,每次只多執行緒執行一個組的測試,執行完畢後再執行下一個組。伺服器分組的格式為
def splist(l,s):
"將list等分 l"
return[l[i:i+s] for i in range(len(l)) if i%s==0]
剩下來就是個人的盲點知識了,部署web伺服器,運維傳遞請求引數,我接收後執行。翻了下django,部署了一個服務,如果需要其它pc訪問,在啟動伺服器的時候 設定伺服器ip為0.0.0.0:8000
《待續》。。。。。。。。。。。