locust实例

一、示例代码:

from locust import HttpLocust, TaskSet

def login(i):
        i.client.post("/login", {"username": "ellen_key", "password":  
       "education"})
       
def logout(i):
        i.client.post("/logout", {"username": "ellen_key", "password": 
        "education"})

def index(i):
     i.client.get("/")

def profile(i):
    i.client.get("/profile")


class UserBehavior(TaskSet):  # 用户行为类
      def on_start(self):
      login(self)

      def on_stop(self):
          logout(self)

      tasks = {index: 2, profile: 1}   # 定义任务事件的请求比例


class WebsiteUser(HttpLocust):  # 蝗虫类
      task_set = UserBehavior
      min_wait = 3000
      max_wait = 6000

这里我们定义了许多Locust任务,它们是带有一个参数(Locust类实例)的普通Python callables 。这些任务收集在tasks属性的TaskSet类下 。然后我们有一个代表用户的 类,我们在其中定义模拟用户在执行任务之间应该等待多长时间,以及哪个 类应该定义用户的“行为”。 类可以嵌套。HttpLocustTaskSetTaskSet

的HttpLocust类从继承 Locust的类,并把它添加一个客户端属性,它是的一个实例 HttpSession,可用于使HTTP请求。

另一种:使用@task装饰器,声明任务的方法

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  on_stop(self):
 """ on_stop is called when the TaskSet is stopping """  
           self.logout() 

      def  login(self): self.client.post("/login", {"username":"ellen_key", "password":"education"}) 

      def  logout(self): self.client.post("/logout", {"username":"ellen_key", "password":"education"})
      @task(2) 
      def  index(self): self.client.get("/") 
      @task(1) 
      def  profile(self): self.client.get("/profile") 

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

在Locust类(以及HttpLocust 因为它是一个子类),也可以让一个在指定最小和最大等待时间毫秒,每个模拟用户之间的任务执行(min_wait和MAX_WAIT)以及其他用户的行为。默认情况下,时间是在min_wait和max_wait之间统一随机选择的,但是可以通过将wait_function设置为任意函数来使用任何用户定义的时间分布。例如,对于指数分布的等待时间平均为1秒:

import  random  class  WebsiteUser(HttpLocust): 
   task_set = UserBehaviour wait_function =  lambda  self: random.expovariate(1)*1000

二、启动蝗虫

要使用上面的Locust文件运行Locust,

1. locust文件当前目录运行:

$ locust --host=http://example.com

2. 其它目录下运行,使用-f以下命令指定:

$ locust -f locust_files/my_locust_file.py --host=http://example.com

3. 运行在同一台机器的多个进程中的locust:

  1. 首先,通过指定--master来启动主进程 :

$ locust -f locust_files/my_locust_file.py --master --host=http://example.com

  1. 其次,启动任意数量的从属进程:

$ locust -f locust_files/my_locust_file.py --slave --host=http://example.com

4. 运行分布在多台机器上的Locust:

必须在启动从机时指定主机主机(在运行分布在单台机器上的Locust时不需要这样做,因为主机主机默认为127.0.0.1):

$ locust -f locust_files/my_locust_file.py --slave --master-host=192.168.0.100 --host=http://example.com

注意

要查看所有可用选项类型: locust --help

打开Locust的Web界面

使用上述命令行之一启动Locust后,应打开浏览器并将其指向http://127.0.0.1:8089(如果您在本地运行Locust)。界面响应如下:

locust实例_第1张图片

你可能感兴趣的:(locust实例)