国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

Python locust工具使用詳解

瀏覽:6日期:2022-06-25 17:14:52

今年負(fù)責(zé)部門的人員培養(yǎng)工作,最近在部門內(nèi)部分享和講解了locust這個工具,今天再博客園記錄下培訓(xùn)細(xì)節(jié)。相信你看完博客,一定可以上手locust這個性能測試框架了。

一、簡介1、優(yōu)勢

locust是python語言開發(fā)的一款的開源的的性能測試框架,他比jmeter更加的輕量級,主要是通過協(xié)程(gevent)的方式去實現(xiàn)并發(fā),通過協(xié)程的方式可以大幅提高單機(jī)的并發(fā)能力,同時避免系統(tǒng)級的資源調(diào)度。locust具有開源性、分布式、支持高并發(fā),支持webUI的操作方式。

2、劣勢

locust的圖表功能較弱,只展示了很少的數(shù)據(jù)

locust不支持監(jiān)控服務(wù)端的狀態(tài),需要借助第三方工具,或者自己寫代碼去實現(xiàn)

二、安裝

locust的安裝非常簡單,直接通過pip的方式就可以安裝

pip install locust三、locust的庫和方法介紹1、from locust import task

通過task可以把某個函數(shù)指定為任務(wù),直接@task裝飾對應(yīng)的函數(shù)即可,在@tast(n)中可以有一個參數(shù)n,意思是這個任務(wù)的占比是多少

2、from locust import TaskSet

需要定義一個類,繼承TaskSet這個類,這個是是一個任務(wù)集的概念,這個類中可以包括多個task

3、from locust import HttpUser

需要定義一個類,這個類要繼承HttpUser,通過這個定義的類我們可以執(zhí)行具體的任務(wù)集

看了上面的介紹,可能大家有點云里霧里的,下面我們由淺入深看代碼

四、實戰(zhàn)代碼V1.0(入門代碼)1、代碼如下

from locust import HttpLocustfrom locust import HttpUserfrom locust import taskfrom locust import TaskSet#指定一個任務(wù)集class My_task_set(TaskSet): #這是某個任務(wù),30是比例,比如這里是30/50 @task(30) def getindex1(self):# client就是個requests對象# catch_response,告訴locust如何判斷請求失敗還是成功res = self.client.get('/bainianminguo/p/10952586.html') @task(20) def getindex2(self):# client就是個requests對象res = self.client.get('/bainianminguo/p/7253930.html') class WebSite(HttpUser): # 指定要執(zhí)行哪個任務(wù)集 tasks = [My_task_set,] # 請求和請求之間最小的間隔時間 min_wait = 1000 # 請求和請求之間最大的間隔時間 max_waif = 20002、進(jìn)入代碼的目錄,執(zhí)行如下命令

Python locust工具使用詳解

3、打開瀏覽器,輸入http://localhost:8089/

Python locust工具使用詳解

4、參數(shù)講解

Number of total users to simulate 模擬的總的用戶數(shù)

Spawn rate 每秒鐘新增的用戶數(shù)

五、實戰(zhàn)代碼V1.1(入門代碼)1、任務(wù)集類中的on_start方法

class My_task_set(TaskSet): #添加初始化方法 def on_start(self):print('類似類中的構(gòu)造方法,每個用戶在任務(wù)開始前,只執(zhí)行一次,在這里可以定義一個對象的屬性,這樣其它測試集就可以使用這個屬性')

這個方法類似pytest框架中的前置條件或者說是面向?qū)ο笾械臉?gòu)造方法

2、任務(wù)集類中的on_start方法

def on_stop(self): print('類似類中的后置方法,每個用戶在任務(wù)開始后,只執(zhí)行一次,在這里可以定義一個對象的屬性,這樣其它測試集就可以使用這個屬性')六、實戰(zhàn)代碼V1.2(入門代碼)1、如何判斷請求是失敗還是成功

Python locust工具使用詳解

2、然后再響應(yīng)的消息中指定判斷邏輯即可,success即為成功,failure即為失敗

Python locust工具使用詳解

七、實戰(zhàn)代碼V1.3(全量代碼)

from locust import HttpLocustfrom locust import HttpUserfrom locust import taskfrom locust import TaskSet # locust中的client會自動幫我們處理cookies。類似request.session(),所以如果我們登陸的時候,只需要在on_start中登陸一次就可以了 # 如果在locust中,如果url是不需要統(tǒng)計,則我們不要用clent去訪問api,應(yīng)該用request去訪問,這樣就locust就不會統(tǒng)計request庫發(fā)起的請請求#指定一個任務(wù)集class My_task_set(TaskSet): #添加初始化方法 def on_start(self):print('類似類中的構(gòu)造方法,每個用戶在任務(wù)開始前,只執(zhí)行一次,在這里可以定義一個對象的屬性,這樣其它測試集就可以使用這個屬性') def on_stop(self):print('類似類中的后置方法,每個用戶在任務(wù)開始后,只執(zhí)行一次,在這里可以定義一個對象的屬性,這樣其它測試集就可以使用這個屬性') #這是某個任務(wù),30是比例,比如這里是30/50 @task(30) def getindex1(self):# client就是個requests對象# catch_response,告訴locust如何判斷請求失敗還是成功res = self.client.get('/bainianminguo/p/10952586.html',catch_response=True)if res.code == 200: res.success()else: res.failure('ff')print(res) @task(20) def getindex2(self):# client就是個requests對象res = self.client.get('/bainianminguo/p/7253930.html')print(res) class WebSite(HttpUser): # 指定要執(zhí)行哪個任務(wù)集 # task_set = My_task_set tasks = [My_task_set,] # 請求和請求之間最小的間隔時間 min_wait = 1000 # 請求和請求之間最大的間隔時間 max_waif = 2000 # Number of total users to simulate 模擬的用戶數(shù)# Spawn rate 每秒鐘產(chǎn)生的用戶數(shù)八、常見問題1、cookies

locust中的client會自動幫我們處理cookies。類似request.session(),所以如果我們登陸的時候,只需要在on_start中登陸一次就可以了

2、多統(tǒng)計api的問題

如果在locust中,如果url是不需要統(tǒng)計,則我們不要用clent去訪問api,應(yīng)該用request去訪問,這樣就locust就不會統(tǒng)計request庫發(fā)起的請請求

九、分布式調(diào)用的問題

一旦單臺機(jī)器不夠模擬足夠多的用戶時,Locust支持運(yùn)行在多臺機(jī)器中進(jìn)行壓力測試。 為了實現(xiàn)這個,你應(yīng)該在 master 模式中使用--master標(biāo)記來啟用一個 Locust 實例。這個實例將會運(yùn)行你啟動測試的 Locust 交互網(wǎng)站并查看實時統(tǒng)計數(shù)據(jù)。<br>master 節(jié)點的機(jī)器自身不會模擬任何用戶。相反,你必須使用 --slave 標(biāo)記啟動一臺到多臺 Locustslave 機(jī)器節(jié)點,與標(biāo)記 --master-host 一起使用(指出master機(jī)器的IP/hostname)。 常用的做法是在一臺獨立的機(jī)器中運(yùn)行master,在slave機(jī)器中每個處理器內(nèi)核運(yùn)行一個slave實例。 注意:master 和每一臺 slave 機(jī)器,在運(yùn)行分布式測試時都必須要有 locust 的測試文件。

在 master 模式下啟動 Locust: locust -f my_loucstfile.py --master 在每個 slave 中執(zhí)行(192.168.0.14 替換為你 msater 的IP): locust -f my_locustfile.py --slave --master-host=192.168.0.14

Python locust工具使用詳解

以上就是Python locust工具使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Python locust工具的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 河源市| 长垣县| 观塘区| 兴义市| 四会市| 博白县| 佛教| 安图县| 齐河县| 兖州市| 安仁县| 清新县| 开远市| 仁布县| 左权县| 尉氏县| 罗源县| 息烽县| 肥城市| 静乐县| 鸡西市| 乐东| 鹿泉市| 东港市| 陇川县| 金湖县| 怀宁县| 高密市| 图木舒克市| 师宗县| 梨树县| 本溪| 鹿邑县| 汉阴县| 漳浦县| 黄石市| 安乡县| 泗水县| 仙桃市| 凌云县| 堆龙德庆县|