中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用python實現性能測試工具

發布時間:2020-10-26 14:14:48 來源:億速云 閱讀:168 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關利用python實現性能測試工具,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

性能工具的核心就是 并發 和 請求。

請求可以選擇Python的requests庫。

并發可以通過python的 進程、線程、協程模擬。

這么一想,也不是很難了,上手擼一個。

依賴庫

requests==2.22.0
gevent==20.9.0
numpy==1.19.2

requests 大家并不陌生,HTTP請求庫。

gevent是python協程庫,通過協程模擬并發更節省資源,在同樣配置下能模擬更多的并發。

numpy 是python的數據計算庫,提供大量組數和矩陣運算,這里用它求列表的平均值。

實現腳本

好了,接下來開始上手寫代碼了。

from __future__ import print_function
import time
import gevent
from gevent import monkey
monkey.patch_all()

import requests
from numpy import mean


users = 10 # 用戶數
numbers = 100 # 請求次數
req_url = "http://127.0.0.1:8080/user/tom" # 請求URL

print("請求URL: {url}".format(url=req_url))

print("用戶數:{},循環次數: {}".format(users, numbers))

print("============== Running ===================")

pass_number = 0
fail_number = 0

run_time_list = []

def running(url):
  global fail_number
  global pass_number
  for _ in range(numbers):
    start_time = time.time()
    r = requests.get(url)
    if r.status_code == 200:
      pass_number = pass_number + 1
      print(".", end="")
    else:
      fail_number = fail_number + 1
      print("F", end="")

    end_time = time.time()
    run_time = round(end_time - start_time, 4)
    run_time_list.append(run_time)


jobs = [gevent.spawn(running, req_url) for _url in range(users)]
gevent.wait(jobs)

print("\n============== Results ===================")
print("最大:    {} s".format(str(max(run_time_list))))
print("最小:    {} s".format(str(min(run_time_list))))
print("平均:    {} s".format(str(round(mean(run_time_list), 4))))
print("請求成功", pass_number)
print("請求失敗", fail_number)
print("============== end ===================")

設計思路

在JMeter中創建線程組有兩個參數 線程數和 循環數,即 用戶數 和請求數,設置多少個用戶,每個用戶用戶跑多少次,用戶數通過協程模擬,每次用戶運行次數通過for循環實現。

至于請求就比較簡單了,直接通過requests發送請求。通過判斷影響的狀態碼是否為200來判斷是否成功,通過分別計算成功和失敗的請求個數。

關于請求時間統計,在每次請求前后獲得當前時間戳,然后計算時間差就是單個接口的調用時間。最大,最小,平均通過計算就可輕松的得到。

> python3 ab.py

請求URL: http://127.0.0.1:8080/user/tom
用戶數:10,循環次數: 100
============== Running ===================
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
.
============== Results ===================
最大:    0.0352 s
最小:    0.0036 s
平均:    0.0204 s
請求成功 1000
請求失敗 0
============== end ===================

后續

把ab.py腳本做成 ab 命令行工具。

支持更多的請求類型(get/post/put/delete)和參數。

更多統計維度,吞吐量、吞吐率

增加啟動時間,思考時間等

看完上述內容,你們對利用python實現性能測試工具有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

旌德县| 台安县| 浦城县| 杭锦后旗| 道真| 鄂托克旗| 和林格尔县| 三门峡市| 昂仁县| 高要市| 木兰县| 兴化市| 岢岚县| 麦盖提县| 荔浦县| 吉安市| 咸宁市| 牙克石市| 兴义市| 内黄县| 灌云县| 东兰县| 广平县| 永兴县| 湾仔区| 云林县| 太和县| 民勤县| 乐东| 无极县| 盐城市| 长岛县| 微山县| 忻城县| 曲阜市| 壤塘县| 富宁县| 屏东县| 久治县| 扬中市| 佛教|