最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

一、Locust快速 入門

2023-04-12 12:23 作者:親切浪子  | 我要投稿

1 . 介紹


Locust 是一種易于使用、可編寫腳本且可擴(kuò)展的性能測(cè)試工具。


您可以在常規(guī) Python 代碼中定義用戶的行為,而不是被困在 UI 或限制性領(lǐng)域特定語(yǔ)言中。


這使得 Locust 可以無(wú)限擴(kuò)展并且對(duì)開(kāi)發(fā)人員非常友好。


- **用普通的舊 Python 編寫測(cè)試場(chǎng)景**


> 如果您希望您的用戶循環(huán)、執(zhí)行某些條件 行為或進(jìn)行某些計(jì)算,您只需使用 Python 提供的常規(guī)編程結(jié)構(gòu)。Locust 在其自己的 greenlet(輕量級(jí)進(jìn)程/協(xié)程)中運(yùn)行每個(gè)用戶。這使您能夠像普通(阻塞)Python 代碼一樣編寫測(cè)試,而不必使用回調(diào)或其他一些機(jī)制。因?yàn)槟愕膱?chǎng)景“只是 python”,所以你可以使用你的常規(guī) IDE,并將你的測(cè)試作為常規(guī)代碼進(jìn)行版本控制。


- **分布式和可擴(kuò)展——支持?jǐn)?shù)十萬(wàn)并發(fā)用戶**


> Locust 使運(yùn)行分布在多臺(tái)機(jī)器上的負(fù)載測(cè)試變得容易。它是基于事件的(使用[gevent](http://www.gevent.org/)),這使得單個(gè)進(jìn)程可以處理數(shù)千個(gè)并發(fā)用戶。雖然可能有其他工具能夠在給定硬件上每秒處理更多請(qǐng)求,但每個(gè) Locust 用戶的低開(kāi)銷使其非常適合測(cè)試高度并發(fā)的工作負(fù)載。


- **基于網(wǎng)絡(luò)的用戶界面**


> Locust 有一個(gè)用戶友好的 Web 界面,可以實(shí)時(shí)顯示測(cè)試進(jìn)度。您甚至可以在測(cè)試運(yùn)行時(shí)更改負(fù)載。它也可以在沒(méi)有 UI 的情況下運(yùn)行,使其易于用于 CI/CD 測(cè)試。


- **可以測(cè)試任何系統(tǒng)**


> 盡管 Locust 主要用于網(wǎng)站/服務(wù),但它也可用于測(cè)試幾乎任何系統(tǒng)或協(xié)議。只需 為您要測(cè)試的內(nèi)容[編寫客戶端](https://docs.locust.io/en/stable/testing-other-systems.html#testing-other-systems)[,或探索社區(qū)創(chuàng)建的一些](https://github.com/SvenskaSpel/locust-plugins#users)客戶端。


- **可入侵**


> Locust 很小而且非常靈活,我們打算保持這種狀態(tài)。如果您想[將報(bào)告數(shù)據(jù)發(fā)送到您喜歡的數(shù)據(jù)庫(kù)和圖形系統(tǒng)](https://github.com/SvenskaSpel/locust-plugins/blob/master/locust_plugins/listeners.py),包裝對(duì) REST API 的調(diào)用以處理系統(tǒng)的細(xì)節(jié)或運(yùn)行[完全自定義的加載模式](https://docs.locust.io/en/stable/custom-load-shape.html#custom-load-shape),沒(méi)有什么能阻止您!


2 .安裝


```python

# 安裝

> pip install locust -i https://pypi.douban.com/simple


# 驗(yàn)證

> locust -V

```


## 3 .編寫locustfile


```python

import time

from locust import HttpUser, task, between


class QuickstartUser(HttpUser):

? ? wait_time = between(1, 5)


? ? @task

? ? def hello_world(self):

? ? ? ? self.client.get("/hello")

? ? ? ? self.client.get("/world")


? ? @task(3)

? ? def view_items(self):

? ? ? ? for item_id in range(10):

? ? ? ? ? ? self.client.get(f"/item?id={item_id}", name="/item")

? ? ? ? ? ? time.sleep(1)


? ? def on_start(self):

? ? ? ? self.client.post("/login", json={"username":"foo", "password":"bar"})

```


### 3.1 必須繼承User


? ? ? ?一個(gè)Locustfile只是一個(gè)普通的Python模塊,它可以從其他文件或包中導(dǎo)入代碼。


```python

class QuickstartUser(HttpUser):

```


? ? ? ?在這里,我們?yōu)槲覀儗⒁M的用戶定義了一個(gè)類。它繼承自HttpUser,給每個(gè)用戶一個(gè)客戶端屬性,也就是HttpSession的一個(gè)實(shí)例,可以用來(lái)向我們要進(jìn)行負(fù)載測(cè)試的目標(biāo)系統(tǒng)發(fā)出HTTP請(qǐng)求。


? ? ? ?**當(dāng)測(cè)試開(kāi)始時(shí),locust會(huì)給它模擬的每個(gè)用戶創(chuàng)建一個(gè)這個(gè)類的實(shí)例,每個(gè)用戶都會(huì)在自己的綠色gevent線程中開(kāi)始運(yùn)行。一個(gè)文件要成為有效的locustfile,必須至少包含一個(gè)繼承自User的類**


------


### 3.2 任務(wù)等待時(shí)間


```python

wait_time = between(1, 5)

```


**我們的類定義了一個(gè)wait_time,它將使模擬用戶在每個(gè)任務(wù)(見(jiàn)下文)執(zhí)行后等待1到5秒。更多信息見(jiàn)wait_time屬性。**


------


### 3.3 任務(wù)


用@task裝飾的方法是你Locust文件的核心。


**對(duì)于每一個(gè)正在運(yùn)行的用戶,Locust會(huì)創(chuàng)建一個(gè)greenlet(微線程),它將調(diào)用這些方法。**


```python

@task

def hello_world(self):

? ? self.client.get("/hello")

? ? self.client.get("/world")


@task(3)

def view_items(self):

```


? ? ? ?我們通過(guò)用@task裝飾兩個(gè)方法來(lái)聲明兩個(gè)任務(wù),其中一個(gè)被賦予較高的權(quán)重(3)。


? ? ? ?當(dāng)我們的QuickstartUser運(yùn)行時(shí),它將從聲明的任務(wù)中挑選一個(gè)--在本例中是hello_world或view_items 并執(zhí)行它。**task任務(wù)是隨機(jī)挑選的,但你可以給它們不同的權(quán)重***。


? ? ? **上面的配置將使Locust挑選view_items的可能性是hello_world的三倍**。


? ? ? **當(dāng)一個(gè)任務(wù)執(zhí)行完畢后,用戶將在其等待時(shí)間內(nèi)睡覺(jué)(在這種情況下是1到5秒)。在它的等待時(shí)間之后,它將挑選一個(gè)新的任務(wù),并不斷重復(fù)。**


注意,只有用@task裝飾的方法才會(huì)被選中,所以你可以用任何你喜歡的方式定義你自己的內(nèi)部輔助方法。


```python

self.client.get("/hello")

```


#### 3.3.1? ?HTTP調(diào)用


self.client屬性使我們可以進(jìn)行HTTP調(diào)用,這些調(diào)用將被Locust記錄下來(lái)。關(guān)于如何進(jìn)行其他類型的請(qǐng)求、驗(yàn)證響應(yīng)等的信息,請(qǐng)參見(jiàn)使用[HTTP客戶端。](https://docs.locust.io/en/stable/writing-a-locustfile.html#client-attribute-httpsession)


注意


> HttpUser不是一個(gè)真正的瀏覽器,因此不會(huì)解析一個(gè)HTML響應(yīng)來(lái)加載資源或渲染頁(yè)面。不過(guò),它將保持對(duì)cookie的跟蹤


```python

@task(3)

def view_items(self):

? ? for item_id in range(10):

? ? ? ? self.client.get(f"/item?id={item_id}", name="/item")

? ? ? ? time.sleep(1)

```


#### 3.3.2 請(qǐng)求分組


在view_items任務(wù)中,我們通過(guò)使用一個(gè)可變的查詢參數(shù)加載10個(gè)不同的URL。為了不在Locust的統(tǒng)計(jì)中得到10個(gè)單獨(dú)的條目--因?yàn)榻y(tǒng)計(jì)是根據(jù)URL分組的--我們使用名稱參數(shù)將所有這些請(qǐng)求分組在一個(gè)名為"/item "的條目下。


#### 3.3.3 任務(wù)初始化和清理


```python

def on_start(self):

? ? self.client.post("/login", json={"username":"foo", "password":"bar"})

```


此外,我們還聲明了一個(gè)on_start方法。當(dāng)每個(gè)模擬用戶開(kāi)始時(shí),將為他們調(diào)用這個(gè)名字的方法。更多信息見(jiàn)on_start和on_stop方法。


------


### 3.4 自動(dòng)生成 locustfile


你可以使用[har2locust](https://github.com/SvenskaSpel/har2locust)來(lái)生成基于瀏覽器記錄(HAR-file)的蝗蟲(chóng)文件。


它對(duì)不習(xí)慣編寫自己的locustfile的初學(xué)者特別有用,但對(duì)更高級(jí)的使用情況也是高度可定制的。


> 注意:

>

> har2locust仍處于測(cè)試階段。它不一定能生成正確的蝗蟲(chóng)文件,而且它的界面在不同的版本之間可能會(huì)有變化。


更多教程,更多實(shí)戰(zhàn)案例,請(qǐng)閱讀:https://edu.csdn.net/course/detail/38449


更多教程,更多實(shí)戰(zhàn)案例,請(qǐng)閱讀:https://edu.51cto.com/course/33521.html



一、Locust快速 入門的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
平陆县| 土默特右旗| 漯河市| 望江县| 岑巩县| 齐齐哈尔市| 隆安县| 无为县| 永顺县| 安丘市| 贺州市| 阳原县| 龙游县| 普定县| 济宁市| 鄂尔多斯市| 都匀市| 浑源县| 兴安盟| 和龙市| 乐清市| 龙游县| 洞口县| 延吉市| 漳州市| 东至县| 吉林省| 峡江县| 宿迁市| 敖汉旗| 西和县| 威信县| 乐安县| 乌拉特前旗| 高邮市| 娱乐| 长宁县| 赫章县| 广安市| 内江市| 巴楚县|