一個HBase MultiActionResultTooLarge的問題分享
741
2022-05-29
安裝
pip?install?multi-mechanize?mechanize?numpy?matplotlib
mechanize是一個模擬browser行為的一個庫,當然你也可以用其它的如urllib2、request、tornado.httpclient等等庫,不是必須。
后面兩個numpy和matplotlib也是可選的,當你需要它自動生成圖形化報表時才會用到,安裝matplotlib你的系統有可能需要安裝libpng和freetype庫。
multimech-newproject?my_project
自動創建一個my_project目錄,子目錄test_scripts用來放測試腳本,config.cfg是測試配置,主要要配的是測試時間、測試腳本和并發threads量。
腳本編寫,借用官方的一個簡單例子:
注意:按multi-mechanize的默認規則,每個腳本必須有一個Transaction的類,類要有一個run方法,在run里面寫測試業務邏輯。這個例子是打開http://www.example.com,記錄訪問所耗時長,非常簡單明了,而實際的場景你可能需要有用戶登錄、然后測試某個或多個頁面(API),只是測試業務復雜一些,寫法是類似的。一個腳本文件只能有一個Transaction的類、類也只能有一個run方法,寫起case來是不是覺得非常不方便?不用急,針對這點,后面的小技巧部分會另辟蹊徑給你指條明路。
運行項目的測試腳本
multimech-run?my_project
測試結果報表和原始數據將放到results目錄下按測試時間生成的子目錄中,生產的html版本的結果統計如下圖所示:
使用小技巧
Cookie:
如果使用的是mechanize,可以通過下面的方式,從上面的browser對象br里獲取到cookie信息。
br._ua_handlers[“_cookies”].cookieja
單個腳本多個測試用例的支持:這個思路來源于testsuite的概念,同一個testsuite里的case作為一組相關的case可以共享一些代碼邏輯和資源(如browser對象),而multi-mechanize默認的方式是不支持的,要實現這一點,只需要一點小小的技巧即可,上代碼:
base.py,Transaction基類:
真實的并發量計算:multi-mechanize使用了multiprocessing庫,會同時起多個進程,且每個進程按config里的配置起多個線程來實現并發測試,但真正的單位時間內的并發量并不是config里設置threads=10這樣的表示每秒10個并發,真實的并發量需要根據最終完成的transaction數和這些transaction里面包含多少次http請求和總的完成時間來計算得知,這點不是很直觀。
自定義統計數據:你可以往self.custom_timers這個內建的字典里塞任意的自定義統計數據,他們在報表中都能夠得到體現。
本文轉載自異步社區。
原文鏈接:https://www.epubit.com/articleDetails?id=Nefdff311-2c13-4efc-ae68-5ebe127ec670
軟件開發
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。