Нагрузочное тестирование django locustio

Привет я использую locustio(python) для проверки загрузки веб-приложения (django). Проблема в том, что я всегда получаю ошибку 403, когда пытаюсь ее проверить. Он код

  from locust import HttpLocust, TaskSet

def index(l):
    l.client.get("/")
def login(l):
    l.client.post("/login/", {"username":"an@id.com", "password":"education")
def upload(l):
    l.client.get("/upload-image/")
def home(l):
  l.client.get("/home/")
def settings(l):
 l.client.get("/settings/")
def logout(l):
 l.client.get("/logout/")
class UserBehavior(TaskSet):
    tasks = {index:1, upload:1, home:1, settings:1, logout:1}

    def on_start(self):
        login(self)

class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait=5000
    max_wait=9000

2 ответа

Чтобы расширить ответ ZacDelagrange, когда вы используете https, вы также должны установить заголовок Referer, так что в этом примере вы можете сделать

def on_start(self):
    """ Run on start for every Locust hatched """
    r = self.client.get('')
    self.client.headers['Referer'] = self.client.base_url
    self.client.post('/accounts/login/', 
        {'email': 'email', 'password': 'password',
         'csrfmiddlewaretoken': r.cookies['csrftoken']})

Зайдите в свою корневую страницу или на страницу входа в систему, возьмите токен csrf из файла cookie ответов и опубликуйте свой URL для входа в систему с помощью csrftoken. Это должно добавить токен csrf в куки клиента и позволить вам просматривать страницу.

def on_start(self):
    """ Run on start for every Locust hatched """
    r = self.client.get('')
    self.client.post('/accounts/login/', 
        {'email': 'email', 'password': 'password',
         'csrfmiddlewaretoken': r.cookies['csrftoken']})
Другие вопросы по тегам