本文章轉(zhuǎn)載于搜狗測試
一.介紹
Locust是一個(gè)用于可擴(kuò)展的,分布式的,性能測試的,開源的,用Python編寫框架/工具,它非常容易使用,也非常好學(xué)。它的主要思想就是模擬一群用戶將訪問你的網(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版本低。(不小心暴露華安真名?)
升級:python -m pip install -U pip
4.使用locust --help 沒出錯(cuò)就恭喜你好了,但是實(shí)際上是會出錯(cuò)的。。。。。。。
會出現(xiàn),這個(gè): ???locust failed to create process
好吧,這個(gè)時(shí)候網(wǎng)上找到文檔是這樣的:https://segmentfault.com/q/1010000005615543
是pip的bug,去python的安裝目錄里面的script里面的 ?locust-script.py 文件中的第一行 ?用引號擴(kuò)起來就行了。具體圖文看連接吧。
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有坑我也搞定了,如果有人遇到,希望華安伸出愛的小手,私聊我或者加群在群中@我,群號:459645679
三、使用篇
先上代碼:壓測123.sogou.com ? //噓,大家不要聲張,我會被開的
from locust import HttpLocust, TaskSet, task
class WebsiteTasks(TaskSet):
def on_start(self):
self.client.post("/login", { ? //隨便寫的,其實(shí)沒有登錄
"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è)示例中,定義了針對http://123.sogou.com網(wǎng)站的測試場景:先模擬用戶登錄系統(tǒng)(假的,實(shí)際沒有登錄),然后隨機(jī)地訪問首頁(/yx/yeyou)和關(guān)于頁面(/yx/),請求比例為1:2;并且,在測試過程中,兩次請求的間隔時(shí)間為1~5秒間的隨機(jī)值。
那么,如上Python腳本是如何表達(dá)出以上測試場景的呢?
從腳本中可以看出,腳本主要包含兩個(gè)類,一個(gè)是WebsiteUser(繼承自HttpLocust,而HttpLocust繼承自Locust),另一個(gè)是WebsiteTasks(繼承自TaskSet)。事實(shí)上,在Locust的測試腳本中,所有業(yè)務(wù)測試場景都是在Locust和TaskSet兩個(gè)類的繼承子類中進(jìn)行描述的。
那如何理解Locust和TaskSet這兩個(gè)類呢?
簡單地說,Locust類就好比是一群蝗蟲,而每一只蝗蟲就是一個(gè)類的實(shí)例。相應(yīng)的,TaskSet類就好比是蝗蟲的大腦,控制著蝗蟲的具體行為,即實(shí)際業(yè)務(wù)場景測試對應(yīng)的任務(wù)集。
這個(gè)比喻可能不是很準(zhǔn)確,下次的分享我會分別對Locust和TaskSet兩個(gè)類進(jìn)行詳細(xì)介紹。
這里先介紹簡單的使用。
運(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)。