Locust、JMeter性能测试之查询类接口【二】

本文为博主原创,未经授权,严禁转载及使用。
本文链接:https://blog.csdn.net/zyooooxie/article/details/124111115

前面分享 第1期 Locust、JMeter性能测试之查询类接口【一】,现在把第二期补上。

【实际这篇博客推迟发布N个月】

个人博客:https://blog.csdn.net/zyooooxie

【以下所有内容仅为个人项目经历,如有不同,纯属正常】

Locust-辅助工具

我使用的是 Locust 2.8.2

"""
@blog: https://blog.csdn.net/zyooooxie
"""

def read_txt_user_gen(file: str = r'D:\0002-十万用户_手机信息.txt', nrows: int = 10, skiprows: int = None, all_data: str = None):
    if skiprows is None:
        skiprows = random.randint(10, 90000)

    if all_data is not None:
        Log.info('读取TXT文件 全部数据')
        data = pd.read_csv(file, encoding='utf-8', dtype=object)

    else:
        Log.info('{}-{}'.format(nrows, skiprows))

        data = pd.read_csv(file, encoding='utf-8', skiprows=skiprows, nrows=nrows, dtype=object)

    all_data_gen = (d for d in data.values)

    return all_data_gen

"""
@blog: https://blog.csdn.net/zyooooxie
"""

import os
import math
import locust.stats
import queue
import traceback
import random

from locust import between, constant, constant_pacing, constant_throughput
from locust import FastHttpUser
from locust import HttpUser
from locust import task
from user_log import Log
from locust import LoadTestShape
from requests_toolbelt.utils import dump

from xx.xxxx import read_txt_user_gen

locust.stats.CONSOLE_STATS_INTERVAL_SEC = 30

txt_data = read_txt_user_gen(all_data='YES', file=r'D:\60w.txt')


# class QueryUserInfo(HttpUser):
class QueryUserInfo(FastHttpUser):

    # wait_time = between(1, 10)            # 在每次任务执行后引入延迟。如果未指定wait_time,则下一个任务将在完成后立即执行。
    wait_time = constant(1)

    host = 'https://blog.csdn.net/zyooooxie'

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.queue_obj = queue.Queue()

        self.user_id = None
        # Log.info('开工-{}--{}'.format(self, self.queue_obj))

    def first(self):

        self.queue_obj.put_nowait(next(txt_data)[0])

    @task
    def query(self):
        self.first()

        try:
            self.user_id = self.queue_obj.get_nowait()

        except queue.Empty:

            Log.info('Queue Empty:{}'.format(self))
            # exit()

        url = '/queryUserInfo'
        test_dict = {"userId": self.user_id, "qq": "153132336"}
        test_header = {'version': '1.0'}

        with self.client.post(url, json=test_dict, headers=test_header,
                              catch_response=True, name='queryUserInfo') as res:

            try:
                # # 更改断言,有些user在表里就是查不到
                # assert res.text.find(self.user_id) != -1

                assert res.json().get('success') is True
                res.success()

            # except AssertionError:
            #     Log.info(dump.dump_all(res).decode('utf-8'))
            #
            #     res.failure("AssertionError")

            except Exception as e:
                Log.debug(dump.dump_all(res).decode('utf-8'))

                Log.debug(traceback.format_exc())

                # Log.info(e.with_traceback(sys.exc_info()[2]))

                res.failure("{}".format(repr(e)))

            finally:
                # self.queue_obj.put_nowait(self.user_id)
                # Log.info('{}-{}'.format(self.user_id, self))

                pass
				
				
				
if __name__ == '__main__':

    pass

    os.system('del *.log')
	
    cmd_m = 'locust -f {} --logfile=locust.log '.format(__file__)
    Log.info(cmd_m)

    os.system(cmd_m)

Locust’s web interface

https://docs.locust.io/en/stable/quickstart.html#locust-s-web-interface

在这里插入图片描述

在这里插入图片描述

without the web UI

https://docs.locust.io/en/stable/configuration.html

https://docs.locust.io/en/stable/running-without-web-ui.html

本地运行

locust -f D:/performance_test/queryUserInfo0317.py --csv=example  --csv-full-history  --headless -u 105 -r 15 --run-time 1m --stop-timeout 10  --html example_locust.html --logfile example_locust.log

https://docs.locust.io/en/stable/running-distributed.html#running-distributed

本机-分布式

通常应该在工作机器上的每个处理器内核上运行一个工作实例,以利用它们的所有计算能力。

locust -f D:/performance_test/queryUserInfo0317.py --csv=example  --csv-full-history  --headless -u 105 -r 10 --run-time 3m --stop-timeout 10 --expect-workers 2 --html example_locust.html --logfile example_locust.log  --master


locust -f D:/performance_test/queryUserInfo0317.py --worker

压测结果

在这里插入图片描述

本文链接:https://blog.csdn.net/zyooooxie/article/details/124111115

个人博客 https://blog.csdn.net/zyooooxie

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值