Python中使用locust做性能测试时,方法初始化与权重比设置

一,使用locust做性能测试时,初始化方法介绍

使用locust做接口性能测试时,经常会有B接口需要A接口的传参,此时需要在初始化中先执行A接口获取响应值,再传给B接口
参考下面的例子, on_start 方法是初始化方法,One,Two两个方法是性能测试方法,实际执行时会先执行 on_start ,中间执行One,Two,测试结束执行 on_stop
为了测试输出内容,方法中只有写入文档操作,具体数据可以查看同目录的 Report.csv 文件

#coding=utf-8
from locust import TaskSet, task,HttpUser

class MyTaskSet(TaskSet):
    def WriteCSV(self,Str):
        FilePath = "Report.csv"
        with open(FilePath,"a") as FileOBJ:
            FileData = FileOBJ.write(Str+"\n")

    def on_start(self):
        OnStartStr = "TaskSet on_start"
        self.WriteCSV(OnStartStr)
    @task
    def one(self):
        OneStr = "任务1"
        self.WriteCSV(OneStr)
    @task
    def two(self):
        TwoStr = "任务2"
        self.WriteCSV(TwoStr)
    def on_stop(self):
        OnStop = "TaskSet on_stop"
        self.WriteCSV(OnStop)

class WebsitUser(HttpUser):
    weight = 1
    tasks = [MyTaskSet]
    host = "http://www.baidu.com"
    min_wait = 5000
    max_wait = 6000
    stop_timeout = 10



'''
点击STOP,会停止测试,并调用所有当前执行的TaskSet的on_stop,但不会调用teardown函数
ctrl +c,表示停止locust运行,此时会调用TaskSet teardown # 停止locust运行时执行,Locust teardown  # 停止locust运行时执行,(而不会调用TaskSet的on_stop,点击STOP,会停止测试,并调用所有当前执行的TaskSet的on_stop,但不会调用teardown函数)

stop_timeout:Locust停止的秒数,如果为None,将不停止一直执行任务,单位为s秒
-H:指定测试的主机地址(注:会覆盖Locust类指定的主机地址)
-f:指定测试脚本地址(注:脚本中必须包含一个Locust的衍生类)
--no-web:不启动web网页,而是直接开始运行测试,需提供属性-c和-r
-c:并发的用户数,与--no-web一起使用
-r:每秒启动的用户数,与--no-web一起使用
-t:运行时间(单位:秒),与--no-web一起使用
-L:日志级别,默认为INFO
调试命令:locust -f **.py --no-web -c 1 -t 1
运行命令:locust -f **.py


TaskSet on_start  # 每一次开始一个任务时执行
TaskSet tasks…
TaskSet on_stop   # 点击页面stop时,当前所有在执行中的TaskSet执行

'''

二,使用locust做性能测试时,权重介绍

  1. 使用task标签的方式
    还是拿上面的代码作为例子,One方法的权重为 80%,Two方法的权重为 20%,分别在方法的装饰器中设置相应的比例,最后查看文档输出结果,与设置的比例一致
#coding=utf-8
from locust import TaskSet, task,HttpUser

class MyTaskSet(TaskSet):
    def WriteCSV(self,Str):
        FilePath = "Report.csv"
        with open(FilePath,"a") as FileOBJ:
            FileData = FileOBJ.write(Str+"\n")

    def on_start(self):
        OnStartStr = "TaskSet on_start"
        self.WriteCSV(OnStartStr)
    @task(4)
    def one(self):
        OneStr = "任务1"
        self.WriteCSV(OneStr)
    @task(1)
    def two(self):
        TwoStr = "任务2"
        self.WriteCSV(TwoStr)
    def on_stop(self):
        OnStop = "TaskSet on_stop"
        self.WriteCSV(OnStop)

class WebsitUser(HttpUser):
    weight = 1
    tasks = [MyTaskSet]
    host = "http://www.baidu.com"
    min_wait = 5000
    max_wait = 6000
    stop_timeout = 10

在这里插入图片描述
2. 以tasks字典的方式设置权重
代码如下,最后查看报告文件,设置项同样生效

#coding=utf-8
from locust import TaskSet, task,HttpUser

class MyTaskSet(TaskSet):
    def WriteCSV(self,Str):
        FilePath = "Report.csv"
        with open(FilePath,"a") as FileOBJ:
            FileData = FileOBJ.write(Str+"\n")


    def on_start(self):
        OnStartStr = "TaskSet on_start"
        self.WriteCSV(OnStartStr)
    @task
    def one(self):
        OneStr = "任务1"
        self.WriteCSV(OneStr)
    @task
    def two(self):
        TwoStr = "任务2"
        self.WriteCSV(TwoStr)
    def on_stop(self):
        OnStop = "TaskSet on_stop"
        self.WriteCSV(OnStop)
    tasks = {one:4,two:1}


class WebsitUser(HttpUser):
    weight = 1
    tasks = [MyTaskSet]
    host = "http://www.baidu.com"
    min_wait = 5000
    max_wait = 6000
    stop_timeout = 10

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西门一刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值