本文章轉(zhuǎn)載于搜狗測(cè)試
一.介紹
Locust是一個(gè)用于可擴(kuò)展的,分布式的甜孤,性能測(cè)試的,開源的畏腕,用Python編寫框架/工具缴川,它非常容易使用,也非常好學(xué)描馅。它的主要思想就是模擬一群用戶將訪問(wèn)你的網(wǎng)站把夸。每個(gè)用戶的行為由你編寫的python代碼定義,同時(shí)可以從Web界面中實(shí)時(shí)觀察到用戶的行為铭污。
官網(wǎng)地址:http://locust.io/
二.安裝
1.確保你的python環(huán)境恋日,ok膀篮。
2.確保有pipy 或者easy_install
3.pipinstalllocustio ? ? ?或者 ? ??easy_installlocustio
如果出現(xiàn)以下的錯(cuò)誤,恭喜你 pip版本低岂膳。(不小心暴露華安真名誓竿?)
升級(jí):python -m pip install -U pip
4.使用locust --help 沒(méi)出錯(cuò)就恭喜你好了,但是實(shí)際上是會(huì)出錯(cuò)的谈截。筷屡。。傻盟。速蕊。。娘赴。
會(huì)出現(xiàn)规哲,這個(gè): ???locust failed to create process
好吧,這個(gè)時(shí)候網(wǎng)上找到文檔是這樣的:https://segmentfault.com/q/1010000005615543
是pip的bug诽表,去python的安裝目錄里面的script里面的 ?locust-script.py 文件中的第一行 ?用引號(hào)擴(kuò)起來(lái)就行了唉锌。具體圖文看連接吧。
5.然后繼續(xù)locustio --help 然后出現(xiàn)
ImportError: No module named 'core'
解決辦法:
pip uninstall locustio
pip install git+git://github.com/locustio/locust.git@master#egg=locustio
6.locust --help 成功
以上是window的安裝竿奏,Linux有坑我也搞定了袄简,如果有人遇到,希望華安伸出愛(ài)的小手泛啸,私聊我或者加群在群中@我绿语,群號(hào):459645679
三、使用篇
先上代碼:壓測(cè)123.sogou.com ? //噓候址,大家不要聲張吕粹,我會(huì)被開的
from locust import HttpLocust, TaskSet, task
class WebsiteTasks(TaskSet):
def on_start(self):
self.client.post("/login", { ? //隨便寫的,其實(shí)沒(méi)有登錄
"username": "test",
"password": "123456"
})
@task(2)
def index(self):
self.client.get("/yx/")
@task(1)
def about(self):
self.client.get("/yx/yeyou")
class WebsiteUser(HttpLocust):
task_set = WebsiteTasks
host = "http://123.sogou.com"
min_wait = 1000
max_wait = 5000
解釋:
在這個(gè)示例中岗仑,定義了針對(duì)http://123.sogou.com網(wǎng)站的測(cè)試場(chǎng)景:先模擬用戶登錄系統(tǒng)(假的匹耕,實(shí)際沒(méi)有登錄),然后隨機(jī)地訪問(wèn)首頁(yè)(/yx/yeyou)和關(guān)于頁(yè)面(/yx/)荠雕,請(qǐng)求比例為1:2稳其;并且,在測(cè)試過(guò)程中炸卑,兩次請(qǐng)求的間隔時(shí)間為1~5秒間的隨機(jī)值既鞠。
那么,如上Python腳本是如何表達(dá)出以上測(cè)試場(chǎng)景的呢盖文?
從腳本中可以看出损趋,腳本主要包含兩個(gè)類,一個(gè)是WebsiteUser(繼承自HttpLocust,而HttpLocust繼承自Locust)浑槽,另一個(gè)是WebsiteTasks(繼承自TaskSet)。事實(shí)上返帕,在Locust的測(cè)試腳本中桐玻,所有業(yè)務(wù)測(cè)試場(chǎng)景都是在Locust和TaskSet兩個(gè)類的繼承子類中進(jìn)行描述的。
那如何理解Locust和TaskSet這兩個(gè)類呢荆萤?
簡(jiǎn)單地說(shuō)镊靴,Locust類就好比是一群蝗蟲,而每一只蝗蟲就是一個(gè)類的實(shí)例链韭。相應(yīng)的偏竟,TaskSet類就好比是蝗蟲的大腦,控制著蝗蟲的具體行為敞峭,即實(shí)際業(yè)務(wù)場(chǎng)景測(cè)試對(duì)應(yīng)的任務(wù)集踊谋。
這個(gè)比喻可能不是很準(zhǔn)確,下次的分享我會(huì)分別對(duì)Locust和TaskSet兩個(gè)類進(jìn)行詳細(xì)介紹旋讹。
這里先介紹簡(jiǎn)單的使用殖蚕。
運(yùn)行:
locust -f demo.py ?//進(jìn)入到文件的目錄下面,-f參數(shù)下面緊跟腳本的名字
[2017-08-01 21:31:26,334] Leos-MacBook-Air.local/INFO/locust.main: Starting web monitor at *:8089
[2017-08-01 21:31:26,334] Leos-MacBook-Air.local/INFO/locust.main: Starting Locust 0.8a2
登錄瀏覽器:localhost:8089
點(diǎn)擊圖形可以看到運(yùn)行的情況: ?//噓沉迹,不要聲張睦疫,為了給你舉個(gè)例子,我這是在作死鞭呕,要壓去壓hao123.com蛤育,他耐壓(c)。