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

溫馨提示×

溫馨提示×

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

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

python實現接口并發測試腳本

發布時間:2020-10-09 07:50:58 來源:腳本之家 閱讀:302 作者:幸福丶如此 欄目:開發技術

常用的網站性能測試指標有:并發數、響應時間、吞吐量、性能計數器等。

1、并發數

并發數是指系統同時能處理的請求數量,這個也是反應了系統的負載能力。

2、響應時間

響應時間是一個系統最重要的指標之一,它的數值大小直接反應了系統的快慢。響應時間是指執行一個請求從開始到最后收到響應數據所花費的總體時間。

3、吞吐量

吞吐量是指單位時間內系統能處理的請求數量,體現系統處理請求的能力,這是目前最常用的性能測試指標。
QPS(每秒查詢數)、TPS(每秒事務數)是吞吐量的常用量化指標,另外還有HPS(每秒HTTP請求數)。
跟吞吐量有關的幾個重要是:并發數、響應時間。
QPS(TPS),并發數、響應時間它們三者之間的關系是:
QPS(TPS)= 并發數/平均響應時間

4、性能計數器

性能計數器是描述服務器或操作系統性能的一些數據指標,如使用內存數、進程時間,在性能測試中發揮著"監控和分析"的作用,尤其是在分析統統可擴展性、進行新能瓶頸定位時有著非常關鍵的作用。
Linux中可以使用top或者uptime命令看到當前系統的負載及資源利用率情況。
資源利用率:指系統各種資源的使用情況,如cpu占用率為68%,內存占用率為55%,一般使用"資源實際使用/總的資源可用量"形成資源利用率。

壓測腳本(下單的接口):

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import requests,time,json,threading,random

class Presstest(object):
  headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
    'Content-Type': 'application/json; charset=UTF-8',
  }
  def __init__(self,login_url,press_url,phone="1376193000",password="123456"):
    self.login_url = login_url
    self.press_url = press_url
    self.phone = phone
    self.password = password
    self.session = requests.Session()
    self.session.headers = self.headers

  def login(self):
    '''登陸獲取session'''
    data = data = {'t': int(time.time() * 1000), 'userName': self.phone, 'passWord': self.password}
    res = self.session.post(self.login_url,data=json.dumps(data))
    XToken = res.json().get('data').get('companyToken')
    self.session.headers['X-Token'] = XToken

  def testinterface(self):
    '''壓測接口'''
    self.session.headers['X-UnionId'] = 'of6uw1CUVhP533sQok'
    data = {"id": int(''.join(str(random.choice(range(10))) for _ in range(10))),
        "openId": "oMr0c5LGJjlTc", "addressId": 10, "shipType": "SELF", "totalAmount": 5,
        "receivable": 5, "carts": [
        {"amount": 1, "barcode": "1234567890", "skuId": 1, "spec": "34", "itemAmount": 5, "price": 0,
         "cover": "xxxx-dd.oss-cn-shanghai.aliyuncs.com/dfc91fd067ac464c096c90af33a196a5.png",
         "name": "沙宣洗發水", "packingType": "瓶", "placeOfOrigin": "上海", "productId": "310153323435134976",
         "retailPrice": 5, "suitableAge": "1-100"}], "formId": "the formId is a mock one", "comments": "aa"}
    global ERROR_NUM
    try:
      html = self.session.post(self.press_url, data=json.dumps(data))
      if html.json().get('code') != 0:
        print(html.json())
        ERROR_NUM += 1
    except Exception as e:
      print(e)
      ERROR_NUM += 1

  def testonework(self):
    '''一次并發處理單個任務'''
    i = 0
    while i < ONE_WORKER_NUM:
      i += 1
      self.work()
    time.sleep(LOOP_SLEEP)

  def run(self):
    '''使用多線程進程并發測試'''
    t1 = time.time()
    Threads = []

    for i in range(THREAD_NUM):
      t = threading.Thread(target=self.testonework, name="T" + str(i))
      t.setDaemon(True)
      Threads.append(t)

    for t in Threads:
      t.start()
    for t in Threads:
      t.join()
    t2 = time.time()

    print("===============壓測結果===================")
    print("URL:", self.press_url)
    print("任務數量:", THREAD_NUM, "*", ONE_WORKER_NUM, "=", THREAD_NUM * ONE_WORKER_NUM)
    print("總耗時(秒):", t2 - t1)
    print("每次請求耗時(秒):", (t2 - t1) / (THREAD_NUM * ONE_WORKER_NUM))
    print("每秒承載請求數:", 1 / ((t2 - t1) / (THREAD_NUM * ONE_WORKER_NUM)))
    print("錯誤數量:", ERROR_NUM)


if __name__ == '__main__':
  login_url = 'https://ds.xxxxx.com/sys/sysUser/login'
  press_url = 'https://ds.xxxxx.com/weshop/order/checkout'
  phone = "1376193000"
  password = "123456"
  
  THREAD_NUM = 1     # 并發線程總數
  ONE_WORKER_NUM = 5   # 每個線程的循環次數
  LOOP_SLEEP = 0.1    # 每次請求時間間隔(秒)
  ERROR_NUM = 0      # 出錯數
  
  obj = Presstest(login_url=login_url,press_url=press_url,phone=phone,password=password)
  obj.login()
  obj.run()

輸出結果:

===============壓測結果===================
URL: https://ds.xxxxx.com/weshop/order/checkout
任務數量: 1 * 5 = 5
總耗時(秒): 1.9810078144073486
每次請求耗時(秒): 0.39620156288146974
每秒承載請求數: 2.5239678327547805
錯誤數量: 0

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

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

AI

牟定县| 汤阴县| 工布江达县| 清水河县| 新安县| 伊川县| 清流县| 和林格尔县| 乌拉特前旗| 舟曲县| 卢氏县| 金华市| 贡觉县| 东乌珠穆沁旗| 阿城市| 南溪县| 秦安县| 翼城县| 通榆县| 沈阳市| 九江市| 莱阳市| 博爱县| 滕州市| 全南县| 左云县| 改则县| 潞西市| 张家界市| 江门市| 东阳市| 禄劝| 九寨沟县| 丰城市| 临泽县| 阳春市| 铁岭市| 万宁市| 肇州县| 宜城市| 安宁市|