Way to use locust.io by supplying user list

前端 未结 4 1991
小蘑菇
小蘑菇 2020-12-23 10:00

I need to stress-test a system and http://locust.io seems like the best way to go about this. However, it looks like it is set up to use the same user every time. I need eac

4条回答
  •  無奈伤痛
    2020-12-23 10:35

    Locust author here.

    By default, each HttpLocust user instance has an HTTP client that has it's own separate session.

    Locust doesn't have any feature for providing a list of user credentials or similar. However, your load testing scripts are just python code, and luckily it's trivial to implement this yourself.

    Here's a short example:

    # locustfile.py
    
    from locust import HttpLocust, TaskSet, task
    
    USER_CREDENTIALS = [
        ("user1", "password"),
        ("user2", "password"),
        ("user3", "password"),
    ]
    
    class UserBehaviour(TaskSet):
        def on_start(self):
            if len(USER_CREDENTIALS) > 0:
                user, passw = USER_CREDENTIALS.pop()
                self.client.post("/login", {"username":user, "password":passw})
    
        @task
        def some_task(self):
            # user should be logged in here (unless the USER_CREDENTIALS ran out)
            self.client.get("/protected/resource")
    
    class User(HttpLocust):
        task_set = UserBehaviour
        min_wait = 5000
        max_wait = 60000
    

    The above code wouldn't work when running Locust distributed, since the same code runs on each slave node, and they don't share any state. Therefore you would have to introduce some external datastore which the slave nodes could use to share states (e.g. PostgreSQL, redis, memcached or something else).

提交回复
热议问题