locust性能测试工具

介绍

官方网站:https://www.locust.io/
官方文档:http://docs.locust.io/en/stable/installation.html

locust与jmeter区别
  • 开源:软件都为免费的开源软件
  • 使用:jmeter提供GUI界面便于用户操作,locust则需要python编程基础
  • 支持协议:使用JMeter,您可以使用内置函数和第三方插件。您无需编码即可测试不同的协议甚至数据库。这些包括JDBC,FTP,LDAP,SMTP等等。
    而Locust主要用于基于HTTP Web的测试。但是,您也可以自己编码自定义Python函数进行其他协议的性能测试。
  • 并发:JMeter 是基于线程的模型,它为每个用户分配一个单独的线程。每个步骤的线程分配和基准测试需要大量资源,这就是为什么JMeter在一台机器上模拟的用户数量非常有限的原因。
    相反,Locust有一个完全不同的用户模拟模型,它基于事件和异步方法实现。这种实现可以让Locust框架在一台机器上轻松模拟数千个并发用户
  • 脚本录制:jmeter具有脚本录制的内置功能,而Locust根本没有此功能。除此之外,还有许多第三方插件可以为JMeter制作脚本录制。

安装

pip3 install locust

查看安装版本

locust -V
任务权重
@task
def hello_world(self):
    self.client.get(url='/s?wd=phyger',verify=False)

@task(3)
def view_items(self):
    for item_id in range(10):
        self.client.get(f"/item?id={item_id}", name="/item")
        time.sleep(1)

声明两个@task,其中一个@task的权重为3,表示view_items被选择的可能性是hello_world的三倍,运行后,随机挑选一个@task执行,任务执行完,用户将在等待时间后,会再次随机选择一个新任务重复执行

用户权重

如果文件中存在多个用户类,并且在命令行上没有指定用户类,Locust将生成相同数量的每个用户类。您还可以通过将它们作为命令行参数传递来指定要使用同一locustfile中的哪些用户类:

locust -f locust_file.py WebUser MobileUser

可以为用户类设置权重,例如,WebUser的可能性是MobileUser的三倍:

class WebUser(User):
weight = 3
class MobileUser(User):
weight = 1  

可以为用户类具体的用户数,这种情况下,权重属性将被忽略:

class AdminUser(User):
wait_time = constant(600)
fixed_count = 1
on_start和on_stop
def on_start(self):
    self.client.post("/login", json={"username":"foo", "password":"bar"})

任务开始时调用on_start,同样的任务结束可以调用on_stop

wait_time
class QuickstartUser(HttpUser):
    wait_time = between(1, 5)
    host = "https://www.baidu.com"

    @task
    def getIndex(self):
        with self.client.get(url='/s?wd=hello', verify=False) as rep:
            if not rep.status_code:
                self.environment.runner.quit()


    """未指定wait_time,则下一个任务将在完成后立即执行
    between最小值和最大值之间的随机时间
    constant固定时间""

你可能感兴趣的:(乱七八糟的,测试工具,压力测试,python)