locust 1.0.* 以上版本的使用简介

写在前面

本文目的主要是对最新版本的locust使用介绍,以及与老版本的比较介绍。
因为网上搜到的代码放在新版本下运行,会报错,原因就是 版本1.0 开始,locust 改动还是蛮大的

具体改动,官网也有介绍:https://docs.locust.io/en/latest/changelog.html

关于locust 的测试介绍,与jemter, robotframework 比较,一搜一大堆,不再赘述。总之,是一个基于Python 编写的一个 easy-to-use, distributed, user load testing tool

使用说明

环境配置

  • win10

  • python 3.8

  • locust 1.1

安装

最好使用linux, windows performance 在运行大规模测试时肯定是不好的。

说回windows环境安装。纠结一下,还是要说一下安装,因为可能会安装失败,按照官方文档

  1. pip install locust(对,没错,不是网上搜到的 pip install locustio了,已统一为此命令)

  2. 如果失败, 可以去下载一个.whl的文件,按照官方文档来:

image.png
  1. 如果还是失败(我就是),应该是缺少Microsoft Visual C++,网上找了一个问题汇总,里面就有Microsoft Visual C++的安装包,链接如下:

    https://blog.csdn.net/qq_41752647/article/details/105744798

  2. 至此,安装成功

使用

首先,我们把官方示例拿过来,加一个装饰器,然后解读

# locustfile.py
import random
from locust import HttpUser, task, between
​
class QuickstartUser(HttpUser):
 wait_time = between(5, 9)
​
 @task
 def index_page(self):
 self.client.get("/hello")
 self.client.get("/world")
 @tag('1', '2') 
 @task(3)
 def view_item(self):
 item_id = random.randint(1, 10000)
 self.client.get(f"/item?id={item_id}", name="/item")
​
 def on_start(self):
 self.client.post("/login", {"username":"foo", "password":"bar"})

如何启动上面的脚本

  1. 关于命名.py文件:默认叫做locustfile.py ,这样,你在运行时,直接终端输入 locust 即可启动locust

  2. py文件可以改成你想要命名的名称,比如:locust_test.py ,这样,在运行时,终端输入就要改成: locust -f locust_test.py

  3. 其他参数输入,可以使用在终端输入locust --help 来查看,如下截图为单机使用时,常用的几个,其他的可自行查看,从此处也可以看到一些参数的变化

locust-help.png

代码说明

  1. 继承不再是HttpLocust 而是:HttpUser , 能够直接在User类下声明@task。

  2. wait_time 属性可设置用户在下一个请求与这个请求之间sleep的时间,最常使用的是between, between的两个参数,是最大和最小等待时间,而wait_time 会从这个区间中随机选择等待时间。更多wait_time 的参数可参考:https://docs.locust.io/en/latest/writing-a-locustfile.html#wait-time

  3. ·self.client.get(f"/item?id={item_id}", name="/item") name 的话,会指定,此请求只属于/items下,因为如上述代码,如果不指定/items 则locust 会统计10K的单独的请求,这个是不合理的。

  4. self.client 可以看到,源码或者官方文档有介绍self.client=session, session=requests.Session(), 所以,self.client 和requests 有一样的方法, 同样也可以session保持。

  5. on_start 方法, 是在一开始执行时,会执行的一个方法,并且只执行一次,和它对应的还有一个on_stop ,是在执行结束后调用的,应用场景:login, logout

    5.1 PS: 移除了 Locust.setup、 Locust.teardown、 TaskSet.setup、 TaskSet.teardown,改用 on_test_start、on_test_stop

  6. @tag(*tags) 装饰器的作用就是在执行时,使用 -T 或者--tags 1 此时,将测试限制为仅执行使用-tags命令行参数提供的任何标记标记的任务

TaskSet

那TaskSet如何使用呢? 之前版本的继承TaskSet, 现在测试时,运行会报错,之前的代码与更新如下:

from locust import HttpLocust, TaskSet, task

class LocustTest(TaskSet):
​
 @task
 def test(self):
 self.client.get("/")
​
​
class Locust_Test(HttpLocust): # 继承修改为 HttpUser
 task_set = LocustTest # task_set 修改为:tasks = [LocustTest],为列表或者字典
 host = "https://www.baidu.com"
 min_wait = 1000
 max_wait = 2000

查看结果

localhost:8089 查看结果暂未发现巨大变化

其他变化

还有些变化,这里不详细列出来,其实都可以在官方文档找到,主要使用中用到的大概变化就这些

总结

1.0.* 之后的版本,有变化,但是,如何使用基本还是一致的,因为网上搜到的很多还是1.0.* 之前的版本的使用方法,所以,以此记录此次学习,要读官方文档。

官网地址:https://docs.locust.io/en/latest/quickstart.html

你可能感兴趣的:(locust 1.0.* 以上版本的使用简介)