Python實(shí)現(xiàn)性能自動(dòng)化測(cè)試竟然如此簡單
一、思考❓❔
1.什么是性能自動(dòng)化測(cè)試?

性能系統(tǒng)負(fù)載能力超負(fù)荷運(yùn)行下的穩(wěn)定性系統(tǒng)瓶頸自動(dòng)化測(cè)試使用程序代替手工提升測(cè)試效率性能自動(dòng)化使用代碼模擬大批量用戶讓用戶并發(fā)請(qǐng)求多頁面多用戶并發(fā)請(qǐng)求采集參數(shù),統(tǒng)計(jì)系統(tǒng)負(fù)載能力生成報(bào)告
2.Python中的性能自動(dòng)化測(cè)試庫?

locust庫
使用Python使用代碼來創(chuàng)建批量用戶分布式可以在多臺(tái)服務(wù)器上,進(jìn)行分布式性能測(cè)試可伸縮性強(qiáng)穩(wěn)定、應(yīng)用廣泛經(jīng)得住各種場(chǎng)景下的考驗(yàn)基于web ui界面展示測(cè)試詳情能測(cè)任何系統(tǒng)
二、基礎(chǔ)操作🔨🔨

1.安裝locust
使用官方pypi源來安裝
pip install locustio
使用豆瓣pypi源來安裝(推薦)
pip install -i https://pypi.douban.com/simple locustio
安裝成功之后,在cmd控制臺(tái)將會(huì)新增一條命令,可輸入如下命令查看:
locust --help
2.基本用法
在項(xiàng)目根目錄下創(chuàng)建locustfile.py文件
from locust import Locust, TaskSet, task
class MyTasks(TaskSet):
"""
創(chuàng)建測(cè)試任務(wù)類,需要繼承TaskSet
可以添加多個(gè)測(cè)試任務(wù)
"""
# 每個(gè)測(cè)試任務(wù),往往會(huì)以實(shí)例方法的形式來呈現(xiàn)
# 同時(shí)需要使用task裝飾器來裝飾測(cè)試任務(wù)
@task
def one_task(self):
print("執(zhí)行一個(gè)偉大的測(cè)試任務(wù)!")
class RunTasks(Locust):
"""
創(chuàng)建運(yùn)行測(cè)試類,需要繼承Locust父類
"""
task_set = MyTasks # 指定測(cè)試任務(wù)類,使用task_set覆蓋父類的類屬性
min_wait = 2000 # 指定啟動(dòng)任務(wù)間隔的時(shí)間范圍(單位毫秒):2~5秒之間
max_wait = 5000 # 使用min_wait、max_wait覆蓋父類的類屬性
執(zhí)行性能測(cè)試
# 打開Pycharm Terminal控制臺(tái)
# 運(yùn)行如下命令:locust
運(yùn)行之后,控制臺(tái)會(huì)在本地監(jiān)聽一個(gè)端口

a. 程序文件要命名為 locustfile.py才行
b. 假如命名為one_example.py,則需要這樣運(yùn)行
locust -f one_example.py
在瀏覽器打開UI設(shè)置界面
默認(rèn)使用localhost:8089打開


三、綜合案例演練🔨🔨

1.編寫自動(dòng)化測(cè)試腳本在項(xiàng)目根目錄下創(chuàng)建test_load.py文件
from locust import HttpLocust, TaskSet, task
class AdminLoadTest(TaskSet):
"""
創(chuàng)建后臺(tái)管理站點(diǎn)壓測(cè)類,需要繼承TaskSet
可以添加多個(gè)測(cè)試任務(wù)
"""
def login(self):
"""
登錄實(shí)例方法
:return:
"""
self.client.post("http://localhost:8088/users/login/",
{"user_account": "admin", "password": "123456"})
def logout(self):
"""
登出實(shí)例方法
:return:
"""
self.client.get("http://localhost:8088/users/logout/")
def on_start(self):
"""
當(dāng)任何一個(gè)task調(diào)度執(zhí)行之前,
on_start實(shí)例方法會(huì)被調(diào)用
先登錄
:return:
"""
self.login()
def on_stop(self):
"""
當(dāng)任何一個(gè)task調(diào)度執(zhí)行之后,
on_stop實(shí)例方法會(huì)被調(diào)用
后登出
:return:
"""
self.logout()
@task
def admin_index(self):
"""
對(duì)后臺(tái)主頁進(jìn)行壓測(cè)
:return:
"""
self.client.get("http://localhost:8088/admin/")
class RunLoadTests(HttpLocust):
"""
創(chuàng)建運(yùn)行壓測(cè)類
"""
task_set = AdminLoadTest
2.使用命令行運(yùn)行打開Pycharm Terminal控制臺(tái),運(yùn)行如下命令:
注意:--host參數(shù)指定http主機(jī)地址,-f參數(shù)指定壓測(cè)程序文件名

3.打開web ui界面進(jìn)行配置
設(shè)置并發(fā)用戶數(shù)為10,每5秒創(chuàng)建一個(gè)用戶

壓測(cè)過程截圖

美輪美奐的壓測(cè)報(bào)告

壓測(cè)失敗詳情

下載壓測(cè)統(tǒng)計(jì)數(shù)據(jù)

下載的壓測(cè)統(tǒng)計(jì)數(shù)據(jù)csv文件

六、總結(jié)💡💡

locust做壓測(cè)功能極其強(qiáng)大支持分布式部署提供的接口簡單壓測(cè)代碼非常容易編寫提供UI界面來配置美觀、詳細(xì)的圖表統(tǒng)計(jì)

總結(jié)
以上所述是小編給大家介紹的Python實(shí)現(xiàn)性能自動(dòng)化測(cè)試竟然如此簡單,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
零基礎(chǔ)也能看懂的python內(nèi)置csv模塊教程
這篇博客就為你介紹一個(gè)知識(shí)點(diǎn),python 內(nèi)置模塊 csv 。讓大家一文就看懂csv csv(Comma-Separated Values)文件是什么?以及python 中的 csv 文件清晰解法讀取文件寫入文件 csv 文件其它說明2021-11-11
tensorflow之變量初始化(tf.Variable)使用詳解
今天小編就為大家分享一篇tensorflow之變量初始化(tf.Variable)使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
python3.4 將16進(jìn)制轉(zhuǎn)成字符串的實(shí)例
今天小編就為大家分享一篇python3.4 將16進(jìn)制轉(zhuǎn)成字符串的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Django rest framework jwt的使用方法詳解
這篇文章主要介紹了Django rest framework jwt的使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
一篇文章帶你了解python標(biāo)準(zhǔn)庫--datetime模塊
這篇文章主要為大家介紹了python中的datetime模塊,datetime模塊的接口則更直觀、更容易調(diào)用,想要了解datetime模塊的朋友可以參考一下2021-08-08

