软件测试限流,压力测试:必须了解的限流策略

import datetime

import json

import requests

import logging

import threading

import time

import sys

from time import sleep, ctime

logging.basicConfig(

level=logging.INFO,

format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

logger = logging.getLogger(__name__)

reponse_time = []

OK = []

errorCount = []

class runScript():

def API(self, url, params):

try:

r = requests.get(url, params=params, timeout=10)

#print(r.status_code)

code = r.status_code

if code != 200:

print(code)

errorCount.append[1]

else:

js = json.dumps(r.json())

#print(r.json()) #json格式的响应数据

# print(r.elapsed.total_seconds()) 响应时间

#print("ooo" + js) #没有解码的响应数据

return [r.json(), r.elapsed.total_seconds(), js]

#r.raise_for_status()  # 如果响应状态码不是 200,就主动抛出异常

except requests.RequestException as e:

print('failed.' + e)

errorCount.append[1]

def circulation(self, url, params):

status = 0

datas = "none."

try:

obj = self.API(url, params)

if obj != None:

#print(obj)

reponse_time.append(obj[1])

datas = json.loads(obj[2])["Msg"]

status = json.loads(obj[2])["Code"]

OK.append(datas)

except Exception as e:

return

def test(url, params):

Restime = runScript()

Restime.circulation(url, params)

def main(num, url, params):

print("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓")

start_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S %f')

threads = []

for i in range(num):

t = threading.Thread(target=test, args=(url, params))

threads.append(t)

for t in range(num):

threads[t].start()

#time.sleep(0.0001)

for j in range(num):

threads[j].join()

print("↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑")

print("Starting at:", start_time)

print("All done at:", datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S %f'))

# print(OK)

print('线程数:', len(threads))

print('响应次数:', len(reponse_time))

print('正常响应次数:', len(OK))

print('错误次数:', len(errorCount))

print('总响应最大时长:', (0 if len(reponse_time)==0 else max(reponse_time)))

print('总响应最小时长:', (0 if len(reponse_time)==0 else min(reponse_time)))

print('总响应时长:', (0 if len(reponse_time)==0 else sum(reponse_time)))

print('平均响应时长:', (0 if len(reponse_time)==0 else (sum(reponse_time) / len(reponse_time))))

# print('QPS(TPS)= 并发数/平均响应时间:',num  / (sum(reponse_time) / len(reponse_time)))

if __name__ == '__main__':

num = input('输入需要开启的线程数量:')

url = 'http://192.168.11.35:8598/test.html'  # 地址

#params = {'UserName': 'admin', 'UserPwd': '123456'}  # 参数

main(int(num), url, params)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值