[英]Locustio (Python) login
我想在網站上做一些負載測試。 首先,這是我的代碼:
from locust import HttpLocust, TaskSet, task
class UserBehavior(TaskSet):
def on_start(self):
""" on_start is called when a Locust start before any task is scheduled """
self.login()
def login(self):
post_data = {'username':'my_login', 'password':'my_pass', 'Login':'Login'}
with self.client.post('/sign_in', post_data, catch_response=True) as response:
if 'cookie' not in response.cookies:
response.failure('login failed')
@task(2)
def index(self):
self.client.get("/admin")
@task(1)
def profile(self):
self.client.get("/profile")
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
.我正在運行 locust : 。
我總是收到 405 err 錯誤報告:
有人可以向我解釋如何確保我已登錄以及如何使用 locust 執行此操作嗎? 我有點困惑,因為我也嘗試過使用令牌等使事情工作,但仍然相同。
您可能需要嘗試一些“愚蠢”的事情,具體取決於您的 API 的工作方式,如下所示:
'/sign_in/'
而不是'/sign_in'
。http
時出現錯誤,但是當我使用https
時它工作正常。 您可能也想嘗試一下。'https://my_host/v1/sign_in/'
。至於使用令牌登錄,下面的代碼對我來說很好用:
from locust import HttpLocust, TaskSet, task
import json
class UserBehavior(TaskSet):
def __init__(self, parent):
super(UserBehavior, self).__init__(parent)
self.token = ""
self.headers = {}
def on_start(self):
self.token = self.login()
self.headers = {'Authorization': 'Token ' + self.token}
def login(self):
response = self.client.post("/sign_in/", data={'username':'my_login', 'password':'my_pass', 'Login':'Login'})
return json.loads(response._content)['key']
@task(2)
def index(self):
self.client.get("/admin/", headers=self.headers)
@task(1)
def profile(self):
self.client.get("/profile/", headers=self.headers)
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
在我的情況下調用sign_in
,返回一個key
,然后我將其用作我的請求的令牌。 希望這會有所幫助,我對 Locust 也很陌生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.