pythonlocust使用技巧_python locust 性能测试:HOOKS钩子方法
為locust中不同類型的事件,提供的鉤子方法;
from locust import TaskSet, task, events, Locust
from locust.clients import HttpSession
import subprocess
import random, traceback
from common.sec_encrypt import AESEncrypt, md5_time
from common import read_config
from common.logger import print_file
def on_request_success(request_type, name, response_time, response_length):
print_file(
'success Type: {}, Name: {}, Time: {}ms, length: {}'.format(request_type, name, response_time,
response_length))
def on_request_failure(request_type, name, response_time, exception):
print_file(
'failure Type: {}, Name: {}, Time: {}ms, exception: {}'.format(request_type, name, response_time,
exception))
def on_locust_error(locust_instance, exception, tb):
print_file(
"error locust_instance: {}, exception: {}, traceback: {}".format(locust_instance, exception,
traceback.format_tb(tb)))
def on_hatch_complete(user_count):
print_file("User Locust have generate {} users".format(user_count))
def on_quitting():
print_file("Locust is quiting!")
events.request_success += on_request_success
events.request_failure += on_request_failure
events.locust_error += on_locust_error
events.hatch_complete += on_hatch_complete
events.quitting += on_quitting
class WebUser(TaskSet):
def on_start(self):
self.session = HttpSession('http://localhost:8000/api')
self.r = random.randint(10000, 99999)
@task(2)
def user_auth(self):
"""用戶認證"""
auth_user = ('lixiaofeng', 'fengzi802300')
res = self.session.get('/sec_get_event_list/', params={'eid': self.r}, auth=auth_user,
name='/sec_get_event_list/?eid=[eid]')
print_file(res.json())
# assert res.json()['status'] == 200, '用戶認證接口請求失敗!'
@task(1)
def aes_api(self):
payload = {'name': '187187011{}'.format(self.r)}
# 加密
encodeed = AESEncrypt(payload).encrypt_data()
# print(encodeed)
res = self.session.get('/sec_get_guest_list/', params={'data': encodeed},
name='/sec_get_guest_list/?data=[aes]')
print_file(res.text)
# assert res.json()['status'] == 200, 'AES接口加密請求失敗!'
@task(2)
def md5_api(self):
payload = {"eid": "{}".format(self.r), "name": "一加8手機發布會{}".format(str(self.r)), "limit": 2000, "status": "",
"address": "深圳寶體會展中心",
"start_time": "2019-09-15 22:40:00", 'time': '', 'sign': ''}
payload = md5_time(payload)
res = self.session.post('/sec_add_event/', data=payload, name='/sec_add_event/?data=[md5]')
print_file(res.text)
# assert res.json()['status'] == 200, 'md5接口加密請求失敗!'
@task(2)
def add_guest(self):
"""添加嘉賓"""
payload = {'eid': '{}'.format(self.r), 'realname': '趙小刀{}'.format(self.r),
'phone': '187011{}'.format(self.r),
'email': '187011{}@163.com'.format(self.r)}
res = self.session.post('/add_guest/', data=payload, name='/add_guest/?data=[payload]')
print_file(res.text)
class Run(Locust):
# host = 'http://localhost:8000/api'
task_set = WebUser
max_wait = 6000
min_wait = 3000
# 'locust -f D:\Interface_framework_Beauty\locust_files\locust_api.py --no-web -c 100 -r 10 --run-time {}s'.format(read_config.time)
def run():
subprocess.check_call(
'locust -f G:\Interface_framework_pytest\locust_files\\locust_test.py --no-web -c 1000 -r 100 --run-time {}s'.format(
read_config.time))
if __name__ == '__main__':
run()
1.request_success 成功完成請求后觸發;
參數:
request_tye:請求類型;
name:被調用url路徑;
response_time:響應時間,ms;
response_length:響應內容長度;
2.request_failure 請求失敗時觸發;
參數:
request_tye:請求類型;
name:被調用url路徑;
response_time:響應時間,ms;
exception:拋出的異常;
3.locust_eror 在執行locust類內發生異常時觸發;
參數:
locust_instance:發生異常的locust實例;
exception:拋出的異常;
tb:回溯的對象;
4.hatch_complete 生成所有locust用戶時觸發;
參數:
user_count:生成的用戶數;
5.quitting locust進程退出時觸發;
Python Locust性能測試框架實踐
[本文出自天外歸云的博客園] Locust的介紹 Locust是一個python的性能測試工具,你可以通過寫python腳本的方式來對web接口進行負載測試. Locust的安裝 首先你要安裝pyth ...
python locust 性能測試:locust安裝和一些參數介紹
安裝參考 https://www.cnblogs.com/fnng/p/6081798.html ps:python3.7暫不支持locust:python3安裝建 ...
python locust 性能測試:locust 關聯---提取返回數據并使用
from locust import HttpLocust, TaskSet, taskimport jsonfrom common import readConfig class UserBehav ...
python locust 性能測試:HttpSession
官網解釋:用于在請求之間執行Web請求和保留(會話)cookie的類(以便能夠登錄和退出網站):記錄每個請求,以便locust可以顯示統計信息: from locust import TaskSet, ...
python locust 性能測試:locust 參數化(list) ---循環取數據,數據可重復使用
from locust import TaskSet, task, HttpLocust class UserBehavior(TaskSet): def on_start(self): # 當模擬用 ...
python locust 性能測試:嵌套
TaskSet類和TaskSequence類可用于嵌套: from locust import TaskSet, tas ...
python locust 性能測試:locust參數-保證并發測試數據唯一性,循環取數據
from locust import TaskSet, task, HttpLocustimport queue class UserBehavior(TaskSet): @task def test ...
python locust 性能測試:locsut參數化-保證并發測試數據唯一性,不循環取數據
from locust import TaskSet, task, HttpLocustimport queue class UserBehavior(TaskSet): @task def test ...
Python locust性能測試框架模板
locust框架模板 from locust import HttpLocust, TaskSet, task import Queue class UserBehavior(TaskSet): de ...
隨機推薦
oracle唯一索引與普通索引的區別和聯系以及using index用法
oracle唯一索引與普通索引的區別和聯系 區別:唯一索引unique index和一般索引normal index最大的差異是在索引列上增加一層唯一約束.添加唯一索引的數據列可以為空,但是只要尊在數 ...
系統不支持curl
解決安裝pinphp時出現的“系統不支持curl!” ? 今天在本機安裝phppin開源程序時,提示“系統不支持curl!”錯誤. 由于我本機是UBUNTU系統,所以直接通過apt-get進行安裝. ...
ES5嚴格模式(Strict mode)
嚴格模式(Strict mode)是由ECMA-262規范定義的新興JavaScript標準,第五版發布于2009年12月.旨在改善錯誤檢查功能并且標識可能不會延續到未來JavaScript版本的腳本 ...
在c++程序中執行DOS命令
轉自博客:http://blog.csdn.net/ypist/article/details/8485049 #1,system()方式 在C盤根目錄下新建文件夾,名稱為12: system(&qu ...
thinkPhp 3.1.3的驗證碼無法顯示的問題
Image幫助類的output方法中,在下面的代碼 header("Content-type: image/" . $type); 前增加代碼: ob_end_clean();
JavaScript 運行機制詳解:再談Event Loop
總結
以上是生活随笔為你收集整理的pythonlocust使用技巧_python locust 性能测试:HOOKS钩子方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux常用命令,亲测可用
- 下一篇: 用python下载ts视频