电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python locust工具使用詳解

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

今年負責部門的人員培養工作,最近在部門內部分享和講解了locust這個工具,今天再博客園記錄下培訓細節。相信你看完博客,一定可以上手locust這個性能測試框架了。

一、簡介1、優勢

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

2、劣勢

locust的圖表功能較弱,只展示了很少的數據

locust不支持監控服務端的狀態,需要借助第三方工具,或者自己寫代碼去實現

二、安裝

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

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

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

2、from locust import TaskSet

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

3、from locust import HttpUser

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

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

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

from locust import HttpLocustfrom locust import HttpUserfrom locust import taskfrom locust import TaskSet#指定一個任務集class My_task_set(TaskSet): #這是某個任務,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): # 指定要執行哪個任務集 tasks = [My_task_set,] # 請求和請求之間最小的間隔時間 min_wait = 1000 # 請求和請求之間最大的間隔時間 max_waif = 20002、進入代碼的目錄,執行如下命令

Python locust工具使用詳解

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

Python locust工具使用詳解

4、參數講解

Number of total users to simulate 模擬的總的用戶數

Spawn rate 每秒鐘新增的用戶數

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

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

這個方法類似pytest框架中的前置條件或者說是面向對象中的構造方法

2、任務集類中的on_start方法

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

Python locust工具使用詳解

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

Python locust工具使用詳解

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

from locust import HttpLocustfrom locust import HttpUserfrom locust import taskfrom locust import TaskSet # locust中的client會自動幫我們處理cookies。類似request.session(),所以如果我們登陸的時候,只需要在on_start中登陸一次就可以了 # 如果在locust中,如果url是不需要統計,則我們不要用clent去訪問api,應該用request去訪問,這樣就locust就不會統計request庫發起的請請求#指定一個任務集class My_task_set(TaskSet): #添加初始化方法 def on_start(self):print('類似類中的構造方法,每個用戶在任務開始前,只執行一次,在這里可以定義一個對象的屬性,這樣其它測試集就可以使用這個屬性') def on_stop(self):print('類似類中的后置方法,每個用戶在任務開始后,只執行一次,在這里可以定義一個對象的屬性,這樣其它測試集就可以使用這個屬性') #這是某個任務,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): # 指定要執行哪個任務集 # task_set = My_task_set tasks = [My_task_set,] # 請求和請求之間最小的間隔時間 min_wait = 1000 # 請求和請求之間最大的間隔時間 max_waif = 2000 # Number of total users to simulate 模擬的用戶數# Spawn rate 每秒鐘產生的用戶數八、常見問題1、cookies

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

2、多統計api的問題

如果在locust中,如果url是不需要統計,則我們不要用clent去訪問api,應該用request去訪問,這樣就locust就不會統計request庫發起的請請求

九、分布式調用的問題

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

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

Python locust工具使用詳解

以上就是Python locust工具使用詳解的詳細內容,更多關于Python locust工具的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 拉伸膜,PE缠绕膜,打包带,封箱胶带,包装膜厂家-东莞宏展包装 | 垃圾处理设备_餐厨垃圾处理设备_厨余垃圾处理设备_果蔬垃圾处理设备-深圳市三盛环保科技有限公司 | 防火门-专业生产甲级不锈钢钢质防火门厂家资质齐全-广东恒磊安防设备有限公司 | UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | 微型驱动系统解决方案-深圳市兆威机电股份有限公司 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 硅胶布|电磁炉垫片|特氟龙胶带-江苏浩天复合材料有限公司 | 儿童乐园|游乐场|淘气堡招商加盟|室内儿童游乐园配套设备|生产厂家|开心哈乐儿童乐园 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 九爱图纸|机械CAD图纸下载交流中心 | 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 圣才学习网-考研考证学习平台,提供万种考研考证电子书、题库、视频课程等考试资料 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 天津拓展_天津团建_天津趣味运动会_天津活动策划公司-天津华天拓展培训中心 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 北京办公室装修,办公室设计,写字楼装修-北京金视觉装饰工程公司 北京成考网-北京成人高考网 | 提升海外网站流量,增加国外网站访客UV,定制海外IP-访客王 | 浙江皓格药业有限公司| 挤出熔体泵_高温熔体泵_熔体出料泵_郑州海科熔体泵有限公司 | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 高柔性拖链电缆_卷筒电缆_耐磨耐折聚氨酯电缆-玖泰特种电缆 | 航空障碍灯_高中低光强航空障碍灯_民航许可认证航空警示灯厂家-东莞市天翔航天科技有限公司 | 成都珞石机械 - 模温机、油温机、油加热器生产厂家 | 东莞ERP软件_广州云ERP_中山ERP_台湾工厂erp系统-广东顺景软件科技有限公司 | 桁架机器人_桁架机械手_上下料机械手_数控车床机械手-苏州清智科技装备制造有限公司 | 金属管浮子流量计_金属转子流量计厂家-淮安润中仪表科技有限公司 | 微型气泵-真空-蠕动-水泵-厂家-深圳市品亚科技有限公司 | 彩信群发_群发彩信软件_视频短信营销平台-达信通 | 上海橡胶接头_弹簧减震器_金属软接头厂家-上海淞江集团 | 北京签证代办_签证办理_商务签证_旅游签证_寰球签证网 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 带式过滤机厂家_价格_型号规格参数-江西核威环保科技有限公司 | 手持气象站_便携式气象站_农业气象站_负氧离子监测站-山东万象环境 | 金属雕花板_厂家直销_价格低-山东慧诚建筑材料有限公司 | 酵素生产厂家_酵素OEM_酵素加盟_酵素ODM_酵素原料厂家_厦门益力康 | 【北京写字楼出租_写字楼租赁_办公室出租网/出售】-远行地产官网 |