簡體   English   中英

Locustio (Python) 登錄

[英]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 的工作方式,如下所示:

  1. 嘗試將尾部斜杠 (/) 附加到您的端點,例如'/sign_in/'而不是'/sign_in'
  2. 出於某種原因,當我在主機變量中使用http時出現錯誤,但是當我使用https時它工作正常。 您可能也想嘗試一下。
  3. 如果您有版本,請確保您沒有忘記端點中的版本。 例如, '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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM