负载测试django locustio

atk*_*wa7 9 python django load-testing http-status-code-403 locust

嗨,我使用locustio(python)来测试webapp(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
Run Code Online (Sandbox Code Playgroud)

小智 11

要扩展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']})
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我认为在我阅读你的答案之前,引用者对我来说是个问题. (3认同)
  • 谢谢,引荐来源网址设置节省了我几个小时 (2认同)

ex-*_*tly 8

进入根目录或登录页面,从响应cookie中获取csrf令牌,然后使用csrftoken发布到您的登录URL.这应该将csrf令牌添加到客户端的cookie中,并允许您浏览该页面.

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']})
Run Code Online (Sandbox Code Playgroud)