问题描述
我想使用Locust对我的NLP Web应用程序进行负载测试。该网站非常简单,用户只需要输入其文字和语言类型,然后结果就会显示在下一页。
因此,我想让我的“蝗虫”先在索引页面上传递两个值,然后再转到相应的页面,这应该是快速且容易的。但是我的代码无法正常工作,并且错误消息中写道,GET POST方法存在问题(HTTP 405和HTTP 500错误)。谁能帮我检查我的代码?
from locust import HttpUser,TaskSet,between,task,SequentialTaskSet
class UserBehavior(SequentialTaskSet):
@task
def submit(self):
self.client.post('/',{'text': 'Kobe Bryant is the best NBA player.','language': 'en'})
@task
def get_boto(self):
self.client.get('/boto')
class WebsiteUser(HttpUser):
tasks = [UserBehavior]
wait_time = between(1,2)
解决方法
可能在发布请求之前,数据用户必须登录?
class UserBehavior(SequentialTaskSet):
def on_start(self):
self.client.post("/login",{
"username": "test_user","password": ""
})
,
一个405
听起来好像您可能没有以正确的方式发送请求,也许使用了错误的动词。我将使用调试代理(例如Charles Proxy)来记录流经站点的流量,以便您了解请求的结构和预期方式。然后,我将创建一个新的单独的Python文件,并尝试使用“请求”成功完成某项工作(查看Python : Trying to POST form using requests以获取POST
示例)。蝗虫的HttpUser.client
基于请求,因此一旦使单独的Python文件正常工作并完成所需的工作,您应该可以插入相同的调用,并将request
或session
替换为{ {1}},它应该可以工作。