ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

locustfile代码分解

2021-04-28 00:01:44  阅读:257  来源: 互联网

标签:locustfile task 代码 Locust 分解 TaskSet time 属性 wait


事件顺序

由于许多设置和清除操作是相互依赖的,因此以下是它们的执行顺序:

  1. Locust setup (一次)
  2. TaskSet setup (一次)
  3. TaskSet on_start (每个locust一次)
  4. TaskSet tasks…
  5. TaskSet on_stop (每个locust一次)
  6. TaskSet teardown (一次)
  7. Locust teardown (一次) 通常,setup和teardown方法应该是互补的。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from locust import HttpUser, TaskSet, task, between
import os


class LoginDemo(TaskSet):
    headers = ""

    def on_start(self):
        pass

    @task()
    def login(self):
        with self.client.get("/index.html", headers=self.headers, name="百度首页",
                             catch_response=True) as rsp:
            if rsp.status_code != 200:
                print("Response status code:", rsp.status_code)
                rsp.failure('/login api response error. got %s' % (rsp.status_code))

    def on_stop(self):
        pass


class WebsiteUser(HttpUser):
    tasks =[LoginDemo]
    host = "http://baidu.com/"
    wait_time = between(min_wait=1, max_wait=3)


if __name__ == '__main__':
    os.system("locust -f test_locust.py --web-host=127.0.0.1")

HttpLocust类继承自Locust类,并且添加了一个client属性,该属性是HttpSession的实例,可用于发出HTTP请求。

模拟的用户定义一个类。它继承自HttpUser,该属性为每个用户提供了一个 client 属性,该属性是HttpSession的一个实例。可用于向负载测试的目标系统发出 HTTP 请求。当测试开始时,Locust 将为它每个虚拟用户创建一个此类的实例,并且每个虚拟用户会在自己的 gevent 线程中运行这些实例。



作者:猫与测试
链接:https://www.jianshu.com/p/40102e9a24cb
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

 

Locust类

一个Locust类代表一个用户(或者一个集群Locust)。Locust将为每个正在模拟的用户生成(孵化)一个Locust类实例。Locust类通常应该定义一些属性。

task_set属性

task_set属性应该指向一个TaskSet类,这个类定义了用户的行为,下面将对其进行更详细的描述。

wait_time属性

除了task_set属性,还应该声明一个wait_time方法。它用于确定模拟用户在执行任务之间将等待多长时间。Locust提供了一些内置的函数,返回一些常用的wait_time方法。

最常见的是 between 。它用于使模拟用户在每次执行任务后等待介于最小值和最大值之间的随机时间。其他内置的等待时间函数是constantconstant_pacing

TaskSet类

如果Locust类代表蝗虫群,则可以说TaskSet类代表蝗虫的大脑。每个Locust类必须设置一个task_set属性,该属性指向TaskSet。

顾名思义,TaskSet是任务的集合。这些任务是普通的python可调用对象,并且,如果我们正在对拍卖网站进行负载测试,则可以完成诸如“加载起始页”,“搜索某些产品”和“竞标”之类的工作。

启动负载测试时,派生的Locust类的每个实例将开始执行其TaskSet。接下来的情况是每个TaskSet将选择一个任务并调用它。然后,它将等待Locust类的wait_time方法指定的秒数(除非已直接在TaskSet上声明了wait_time方法,在这种情况下,它将使用自己的方法)。 然后它将再次选择要调用的新任务,再次等待,依此类推。

标签:locustfile,task,代码,Locust,分解,TaskSet,time,属性,wait
来源: https://blog.csdn.net/liucaixin2016/article/details/116212268

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有