开源性能测试工具Locust使用篇(一)

1. 环境准备

  安装python3.6 ,安装步骤略

  pip install locust

  安装完成后使用locust -V检查

2.locust使用,先编辑一个简单的load_test.py的脚本

from locust import HttpLocust,TaskSet,task

class UserBehavior(TaskSet):

    @task
    def baidu_index(self):
        self.client.get("/")


class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 3000
    max_wait = 6000

  

创建UserBehavior()类继承TaskSet类,为用户行为。

创建baidu() 方法表示一个行为,访问百度首页。

@task() 装饰该方法为一个任务

创建WebsiteUser()类用于设置性能测试。

  task_set :指向一个定义了的用户行为类。

  min_wait :用户执行任务之间等待时间的下界,单位:毫秒。

  max_wait :用户执行任务之间等待时间的上界,单位:毫秒

3. 运行locust

locust -f load_test.py --host=https://www.cnblogs.com/Sandy-1128/p/appium-python-sandy-0306-5.html

通过浏览器访问localhost:8089

Number of users to simulate 设置模拟用户数

Hatch rate (users spawned/second)  每秒产生(启动)的用户数。

点击Start swarming 开始运行性能测试

 

也可以使用无web界面访问

  locust -f load_test.py --host=https://www.baidu.com --no-web -c 2 -r 1 -t 1m

启动参数:

  –no-web 表示不使用Web界面运行测试。

  -c 设置虚拟用户数。

  -r 设置每秒启动虚拟用户数。

  -t 设置设置运行时间

 

那我们看另一个实例:

from locust import HttpLocust, TaskSet, task

class WebsiteTasks(TaskSet):
    def on_start(self):
        self.client.post("/", {
        "username": "test",
        "password": "123456"
        })

    @task(2)
    def index(self):
        self.client.get("/p/appium-python-sandy-0306-5.html")

    @task(1)
    def about(self):
        self.client.get("/locust-sandy-0319/")

class WebsiteUser(HttpLocust):
    task_set = WebsiteTasks
    host = "https://www.cnblogs.com/Sandy-1128"
    min_wait = 1000
    max_wait = 2000

  

在这个示例中,定义了针对"https://www.cnblogs.com/Sandy-1128

网站的测试场景:先模拟用户登录系统,然后随机地访问首页(/)和关于页面(/about/),请求比例为2:1;并且,在测试过程中,两次请求的间隔时间为1~2秒间的随机值

 

 

那么,如上Python脚本是如何表达出以上测试场景的呢?

 

从脚本中可以看出,脚本主要包含两个类,一个是WebsiteUser(继承自HttpLocust,而HttpLocust继承自Locust),另一个是WebsiteTasks(继承自TaskSet)。事实上,在Locust的测试脚本中,所有业务测试场景都是在LocustTaskSet两个类的继承子类中进行描述的。

 

 

那如何理解LocustTaskSet这两个类呢?  请见下一篇。

 

 

posted @ 2019-03-19 17:31  Sandy1128  阅读(533)  评论(0编辑  收藏  举报