locust 集合设置完后,运行成功,但是监控发现没有等待后发请求,而是直接发请求了,请帮忙看看怎么回事?

yzy401 2021-05-02 02:16:23
import locust
#from gevent._semaphore import Semaphore
import gevent #集合点:多用户同一时间并发操作(监控平台设置的用户数,如100,20,一共100个用户,每秒增加5个,则会等到100个用户的时候才一起发请求。

#三、集合点
all_locusts_spawned =gevent._semaphore.Semaphore() #集合类实例化
all_locusts_spawned.acquire()#加锁

def on_hatch_complete(**kwargs):
all_locusts_spawned.release()#释放锁

# 挂在到locust钩子函数(所有的Locust实例产生完成时触发)
#老版本:locust.events.hatch_complete += on_hatch_complete
locust.events.spawning_complete.add_listener(on_hatch_complete())


#二、主函数调用的任务类,类名可随意
class UserBehavior2(locust.TaskSet):
#1. 构造函数,可放变量
def on_start(self):
self.index=0
print("======onstart begin :")
all_locusts_spawned.wait() # 集合点:创建钩子方法
print("======onstart end:")


@locust.task
def test_visit(self):
url = "/getJoke?page=" + str(self.parent.share_data[2]) + "&count=" + str(self.index + 2)
res=self.client.get(url, name='getJoke分页查询')
res=res.text
#一.继承locust.HttpUser的类为主函数,相当于main,类名可随意
class WebSiteUser232323(locust.HttpUser): #locust.HttpLocust
#1.被测网站域名
host = 'https://api.apiopen.top'

#3.性能测试任务类:登录还是注册
tasks=[UserBehavior2] #调用哪个任务

#4.等待时间设置
wait_time = locust.between(3,7)
#locust -f locustS.py --host=https://www.baidu.com localhost:8089


...全文
1278 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
essenxu 2022-12-07
  • 打赏
  • 举报
回复

locust.events.spawning_complete.add_listener(on_hatch_complete())
改成
locust.events.spawning_complete.add_listener(on_hatch_complete)
传入一个函数,带上()就是函数返回值了,意义不同,结果不同

5,177

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 质量管理/软件测试
功能测试压力测试安全性测试 个人社区 湖南省·长沙市
社区管理员
  • 软件测试
  • 虫无涯
  • 小博测试成长之路
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎大家加入到软件测试的社区,在这里,希望大家勇于发表自己的看法,欢迎大家分享自己在软件测试工作过程中遇到的问题以及工作经验分享。

1.想转行的小伙伴,遇到问题没有及时回复的,可以私聊小博进行反馈

2.大家对社区有好的建议,都可以在社区发帖进行反馈

推荐大家学习的软件测试入门笔记:软件测试入门学习笔记

试试用AI创作助手写篇文章吧