弹幕游戏-压力测试 Python-Locust模拟送礼物

Hey,读者们!今天给大家带来一个Python性能测试的新玩法——使用Locust模拟发送礼物。是不是听起来就很酷?😎

🎯目标

想象一下,在直播平台上,你希望测试某个直播间的礼物发送功能。那么,怎样用程序来模拟大量用户发送礼物的场景呢?这就是我们今天要聊的!

🔧工具准备

Locust:一个开源的、可扩展的性能测试工具,基于Python和gevent。
Faker:一个用于生成假数据的Python库。

fake = Faker('zh_CN')
class Gift(TaskSet):
    def on_start(self):
        '''进行初始化的工作,每个Locust用户开始做的第一件事'''
        self.room_id = '10000'
        self.url = "/live_data"
        self.gift_list = {
            'xx兵种': {'value':10,'id':'10000'}, # 仙女棒
        	}
        self.gift_name = ['龙']
        self.headers = {
            "x-roomid":self.room_id,
            "x-signature":"xxx",
            "content-type":"application/json",
            "x-msg-type":"live_gift"
        }
        self.gift_data = self.gift_list.get(random.choice(self.gift_name))

    def post_gift(self):
        '''刷礼物'''
        msg_id= str(int(time.time() * 1000000 - random.randint(1, 1000)))
        data = [
            {
                "msg_id": msg_id,
                "sec_openid": msg_id,
                "gift_num": 1,
                "gift_value": self.gift_data.get('value') * 1,
                "avatar_url": 'https://1.png',
                "nickname": fake.name(),
                "timestamp": 10000
            }
        ]
        result = self.client.post(self.url,data=json.dumps(data),headers=self.headers)
        return result

    @task
    def go(self):
        pool = gevent.pool.Pool()
        for _ in range(1):
            pool.spawn(self.post_gift)
        pool.join()

代码解读

初始化
在Gift类中,我们定义了初始化的操作。比如,设置了直播间ID、请求URL、礼物列表等。
使用Faker库生成了随机的昵称。
设置了请求头,包括签名、时间戳等信息。
发送礼物
在post_gift方法中,我们模拟了发送礼物的过程。
生成了一个唯一的msg_id,并构建了发送礼物的数据。
使用client.post方法发送POST请求,模拟发送礼物。
并发控制
在go方法中,我们使用gevent库来并发执行post_gift方法。你可以根据需要调整并发数。
运行测试
在主函数中,我们使用os.system来运行Locust测试。你可以选择以master模式或worker模式运行。
🚀运行测试
运行locust -f mulitGiftTest.py --master来启动master节点。
如果需要更多并发,可以启动多个worker节点。
💡小提示
你可以根据需要调整礼物的种类、昵称的生成规则等。
可以通过Locust的Web界面来监控测试过程,实时查看性能指标。
🎉现在,你就可以用这段代码来模拟大量用户发送礼物的场景了!快来试试吧,让你的性能测试更加有趣和高效!🎊

测试数据

test
此次分享就到这里,欢迎关注公众号:游戏测试技术分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/624846.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通义千问 1.5 -7B fine-tune验证

尝试对对中文数据进行finetune验证,测试模型的可优化方向。下面是代码的详细情况 代码实现 from datasets import load_dataset from transformers import (AutoModelForCausalLM,AutoTokenizer,BitsAndBytesConfig,HfArgumentParser,AutoTokenizer,TrainingArgum…

Spring学习①__Spring初识

Spring Spring初识一、框架二、Spring(春天)简介Spring官网Spring是什么?Spring介绍拓展 Spring初识 一、框架 ​框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。 JAVA框架可以分为三层: 表示层业务…

视频号小店,一个不用直播就可以变现的项目!创业首选!

大家好,我是电商小V 想要创业或者是想要利用视频号变现的小伙伴可以说是很多的,因为视频号这两年的流量是非常大的,甚至即将超越抖音的流量,因为视频号背靠腾讯平台,也是不缺少流量的,并且视频号的流量是可…

高扩展性便携式1553B总线测试仪,支持麒麟操作系统

手提式便携1553B总线测试仪,利用订制平台的PXIe扩展槽嵌入石竹科技自主研发的高性能T系列专用1553B测试板卡和高级协议分析和测试软件FP-1553B Pro、FP-5186集成的一款模块化、功能可订制的测试仪器。 基本配置可对1553B信号进行波形采集(提供软件示波器…

如何实现数字化校园的高效运维

随着科技开展,国家大力支持各级各类学校建造数字化学校,综合利用互联网、大数据、人工智能和虚拟现实技能探究未来教育教育新模式。因为数字化学校的快速开展,学校网内设备类型很多,网络拓扑杂乱,信息运用繁复。各部门…

电机控制杂谈——“双采样双更新模式”对模型预测控制/PI控制的提升有多大?

1.采样频率与PWM开关频率的关系 一般有以下两种采样模式。 如下图(a)所示,这种方式称之为单采单更模式,即在一个PWM周期内,采样一次,更新一次PWM占空比,在这种情况下,采样频率&…

ICode国际青少年编程竞赛- Python-5级训练场-综合练习5

ICode国际青少年编程竞赛- Python-5级训练场-综合练习5 1、 a 16 for i in range(6):Dev.step(1)Dev.turnLeft()Dev.step(a)Dev.step(-a)Dev.turnRight()while Dev.energy < 100:wait()Dev.step(1)a a - 5 i2、 for i in range(5):Dev.step(11 - i * 2)Dev.turnRight()wh…

PBR系列-光之简史

作者&#xff1a;游梦 ​ 欢迎进入官网体验使用&#xff1a;Mapmost——让人与机器联合创作成为新常态 ​说到PBR理论分为三大理论&#xff1a;物理光源、物理材质与物理相机&#xff0c;三者都与光有着千丝万缕的关系&#xff0c;原打算这期讲解物理材质&#xff0c;在梳理知…

刚刚OpenAI发布ChatGPT-4o模型,免费使用GPT4o并免费提供更多功能

就在今日凌晨1点&#xff0c;OpenAI举行了春季发布会&#xff0c;发布了GPT-4o 并免费提供更多功能。 亲测GPT-4o已经可以免费试用&#xff0c;每个人都可以使用它并从中受益&#xff0c;GPT4终于不再是少部分人的玩物。 点击加入ChatGPT4交流群&#xff1a;https://www.aijour…

记一次跨域问题

线上跨域问题&#xff0c;在自己配置确认没问题下&#xff0c;要及时找运维看看是不是nginx配置问题。 两个方面&#xff1a; 项目代码 nginx配置 SpringBoot 解决跨域问题的 5 种方案&#xff01; SpringBoot解决CORS跨域问题 SpringBoot-实现CORS跨域原理及解决方案

unordered_map、unordered_set底层封装

文章目录 一、先实现哈希桶1.1哈希桶的实现方法1.2日常普遍的哈希桶存放的数据有两种&#xff1a;字符串和整形1.3哈希桶的实现代码详解1.3.1哈希桶的两种仿函数&#xff08;int和string&#xff09;1.3.2哈希桶的节点&#xff08;如果桶非常深&#xff0c;这里考虑挂红黑树&am…

MQTT学习(二)

订阅主题和订阅确认 SUBSCRIBE——订阅主题 之前的CONNECT报文&#xff0c;分为 固定报头&#xff1a;必须存在&#xff0c;用于描述报文信息。里面有指出什么类型的报文&#xff0c;报文的等级。可变报头&#xff1a;不一定存在。主要看什么样子类型的报文。有效载荷部分&a…

Go PDF文件操作

目录 介绍 安装 gofpdf API 代码示例 结果展示 介绍 gofpdf 是一个在 Go 语言中用于生成 PDF 文档的库。 安装 gofpdf 首先&#xff0c;你需要安装 gofpdf 库。你可以使用 go get 命令来安装它&#xff1a; go get github.com/jung-kurt/gofpdf API 功能 函数名参数解释示…

25. K 个一组翻转链表 - 力扣(LeetCode)

基础知识要求&#xff1a; Java&#xff1a;方法、while循环、for循环、if else语句 Python&#xff1a; 方法、while循环、for循环、if else语句 题目&#xff1a; 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个…

【目标检测】YOLOv5|YOLOv8模型QT界面可视化部署

YOLO-Deploy-QT_Interface 最近笔者做了YOLO系列算法的部署工作,现做一个总结。主要工作是做了用于部署YOLOv5和YOLOv8的可视化QT界面,可实现图片、文件夹、视频、摄像头的ONNX与OpenVino部署,具体效果如下: 代码链接:https://github.com/Zency-Sun/YOLO-Deploy-QT_Inte…

深入学习Linux内核之v4l2应用编程(二)

一&#xff0c;用户空间访问v4l2设备步骤 V4L2&#xff08;Video for Linux 2&#xff09;是Linux中关于视频设备的内核驱动&#xff0c;它使得Linux系统能够支持视频设备&#xff0c;如摄像头。对于Camera V4L2的应用编程&#xff0c;一般遵循以下步骤&#xff1a; 1&#x…

【正则表达式】1、元字符的认识与分类

1、元字符的概念 正则表达式的常见功能&#xff0c;分别是校验数据的有效性、查找符合要求的文本以及对文本进行切割和替换等操作。 我想你一定在办公软件&#xff0c;比如 Word、Excel 中用过这个功能。你可以使用查找功能快速定位关注的内容&#xff0c;然后使用替换&#xf…

leetcode-最长公共子序列(二)-103

题目要求 思路 step 1&#xff1a;优先检查特殊情况。 step 2&#xff1a;获取最长公共子序列的长度可以使用动态规划&#xff0c;我们以dp[i][j]dp[i][j]dp[i][j]表示在s1中以iii结尾&#xff0c;s2中以jjj结尾的字符串的最长公共子序列长度。 step 3&#xff1a;遍历两个字…

视频号小店从开店到爆单,最详细的攻略教学,来了!

大家好&#xff0c;我是喷火龙 视频号小店从推出到现在一直备受关注&#xff0c;我的团队已经入局视频号小店一年多了&#xff0c; 可以说&#xff0c;新手做视频号小店采用无货源模式和达人带货的玩法依旧是最合适的。 虽然说这个模式和玩法很多人之前都接触过&#xff0c;…