Python實(shí)現(xiàn)性能自動(dòng)化測試竟然如此簡單
一、思考❓❔
1.什么是性能自動(dòng)化測試?
性能系統(tǒng)負(fù)載能力超負(fù)荷運(yùn)行下的穩(wěn)定性系統(tǒng)瓶頸自動(dòng)化測試使用程序代替手工提升測試效率性能自動(dòng)化使用代碼模擬大批量用戶讓用戶并發(fā)請(qǐng)求多頁面多用戶并發(fā)請(qǐng)求采集參數(shù),統(tǒng)計(jì)系統(tǒng)負(fù)載能力生成報(bào)告
2.Python中的性能自動(dòng)化測試庫?
locust庫
使用Python使用代碼來創(chuàng)建批量用戶分布式可以在多臺(tái)服務(wù)器上,進(jìn)行分布式性能測試可伸縮性強(qiáng)穩(wěn)定、應(yīng)用廣泛經(jīng)得住各種場景下的考驗(yàn)基于web ui界面展示測試詳情能測任何系統(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)建測試任務(wù)類,需要繼承TaskSet 可以添加多個(gè)測試任務(wù) """ # 每個(gè)測試任務(wù),往往會(huì)以實(shí)例方法的形式來呈現(xiàn) # 同時(shí)需要使用task裝飾器來裝飾測試任務(wù) @task def one_task(self): print("執(zhí)行一個(gè)偉大的測試任務(wù)!") class RunTasks(Locust): """ 創(chuàng)建運(yùn)行測試類,需要繼承Locust父類 """ task_set = MyTasks # 指定測試任務(wù)類,使用task_set覆蓋父類的類屬性 min_wait = 2000 # 指定啟動(dòng)任務(wù)間隔的時(shí)間范圍(單位毫秒):2~5秒之間 max_wait = 5000 # 使用min_wait、max_wait覆蓋父類的類屬性
執(zhí)行性能測試
# 打開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)化測試腳本在項(xiàng)目根目錄下創(chuàng)建test_load.py文件
from locust import HttpLocust, TaskSet, task class AdminLoadTest(TaskSet): """ 創(chuàng)建后臺(tái)管理站點(diǎn)壓測類,需要繼承TaskSet 可以添加多個(gè)測試任務(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)行壓測 :return: """ self.client.get("http://localhost:8088/admin/") class RunLoadTests(HttpLocust): """ 創(chuàng)建運(yùn)行壓測類 """ task_set = AdminLoadTest
2.使用命令行運(yùn)行打開Pycharm Terminal控制臺(tái),運(yùn)行如下命令:
注意:--host參數(shù)指定http主機(jī)地址,-f參數(shù)指定壓測程序文件名
3.打開web ui界面進(jìn)行配置
設(shè)置并發(fā)用戶數(shù)為10,每5秒創(chuàng)建一個(gè)用戶
壓測過程截圖
美輪美奐的壓測報(bào)告
壓測失敗詳情
下載壓測統(tǒng)計(jì)數(shù)據(jù)
下載的壓測統(tǒng)計(jì)數(shù)據(jù)csv文件
六、總結(jié)💡💡
locust做壓測功能極其強(qiáng)大支持分布式部署提供的接口簡單壓測代碼非常容易編寫提供UI界面來配置美觀、詳細(xì)的圖表統(tǒng)計(jì)
總結(jié)
以上所述是小編給大家介紹的Python實(shí)現(xiàn)性能自動(dòng)化測試竟然如此簡單,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
python數(shù)據(jù)持久存儲(chǔ) pickle模塊的基本使用方法解析
這篇文章主要介紹了python數(shù)據(jù)持久存儲(chǔ) pickle模塊的基本使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08python常用模塊(math itertools functools sys
這篇文章主要介紹了python常用模塊之math itertools functools sys shutil的使用示例講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06python 實(shí)現(xiàn)rolling和apply函數(shù)的向下取值操作
這篇文章主要介紹了python 實(shí)現(xiàn)rolling和apply函數(shù)的向下取值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python中的遠(yuǎn)程調(diào)試與性能優(yōu)化技巧分享
Python 是一種簡單易學(xué)、功能強(qiáng)大的編程語言,廣泛應(yīng)用于各種領(lǐng)域,包括網(wǎng)絡(luò)編程、數(shù)據(jù)分析、人工智能等,在開發(fā)過程中,我們經(jīng)常會(huì)遇到需要遠(yuǎn)程調(diào)試和性能優(yōu)化的情況,本文將介紹如何利用遠(yuǎn)程調(diào)試工具和性能優(yōu)化技巧來提高 Python 應(yīng)用程序的效率和性能2024-05-05使用matplotlib庫實(shí)現(xiàn)圖形局部數(shù)據(jù)放大顯示的實(shí)踐
本文主要介紹了使用matplotlib庫實(shí)現(xiàn)圖形局部數(shù)據(jù)放大顯示的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02