python登录接口并发测试_使用python脚本作接口并发测试

经常使用的网站性能测试指标有:并发数、响应时间、吞吐量、性能计数器等。

一、并发数

并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。

二、响应时间

响应时间是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。响应时间是指执行一个请求从开始到最后收到响应数据所花费的整体时间。

三、吞吐量

吞吐量是指单位时间内系统能处理的请求数量,体现系统处理请求的能力,这是目前最经常使用的性能测试指标。

QPS(每秒查询数)、TPS(每秒事务数)是吞吐量的经常使用量化指标,另外还有HPS(每秒HTTP请求数)。

跟吞吐量有关的几个重要是:并发数、响应时间。

QPS(TPS),并发数、响应时间它们三者之间的关系是:

QPS(TPS)= 并发数/平均响应时间

四、性能计数器

性能计数器是描述服务器或操做系统性能的一些数据指标,如使用内存数、进程时间,在性能测试中发挥着"监控和分析"的做用,尤为是在分析通通可扩展性、进行新能瓶颈定位时有着很是关键的做用。

Linux中可使用top或者uptime命令看到当前系统的负载及资源利用率状况。

资源利用率:指系统各类资源的使用状况,如cpu占用率为68%,内存占用率为55%,通常使用"资源实际使用/总的资源可用量"造成资源利用率。压测脚本(下单的接口):html

#!/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

————————————————

版权声明:本文为CSDN博主「幸福丶如此」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接及本声明。

原文连接:https://blog.csdn.net/m0_37886429/article/details/89020455python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值