Python-locust-踩坑日记

本文介绍了如何使用Locust进行Python性能测试,对比JMeter,它强调单机多用户并发,代码简洁易懂。通过实例展示了如何配置任务集,登录逻辑和API调用,以及如何使用@task注解控制请求频率。

locust轻量级的Python实现的性能脚本,相比较与jmeter,优势在于可以在一台机器上模拟更多的用户,代码实现超级简单

代码实现

代码:


from locust import HttpUser
from locust import task
from locust import TaskSet


# locust中的client会自动帮我们处理cookies。类似request.session(),所以如果我们登陆的时候,只需要在on_start中登陆一次就可以了

# 如果在locust中,如果url是不需要统计,则我们不要用clent去访问api,应该用request去访问,这样就locust就不会统计request库发起的请请求
# 指定一个任务集
class My_task_set(TaskSet):

    # 添加初始化方法
    def on_start(self):
        print("类似类中的构造方法,每个用户在任务开始前,只执行一次,在这里可以定义一个对象的属性,这样其它测试集就可以使用这个属性")

        # self.login()
        #
        # self.headers = {
        #     'Accept-Encoding': 'gzip, deflate',
        #     'Content-Type': 'application/json;charset=UTF-8',
        #     'Authorization': 'Bearer ' + self.token
        # }

    #定义一个登录方法用于获取到令牌信息
    def login(self):
        pass

    def on_stop(self):
        print("类似类中的后置方法,每个用户在任务开始后,只执行一次,在这里可以定义一个对象的属性,这样其它测试集就可以使用这个属性")
        #执行结束之后在这个地方去
    # 这是某个任务,30是比例,比如这里是30/50
    @task(30)
    def getindex1(self):
        # client就是个requests对象
        # catch_response,告诉locust如何判断请求失败还是成功

        requests = self.client
        url="/bainianminguo/p/10952586.html"

        res = requests.get(url,data='', headers='', catch_response=True)

        # 断言type1
        # assert result['code'] == 0

        #断言type2
        if res.code == 200:
            res.success()
        else:
            res.failure("ff")
        print(res)

    @task(20)
    def getindex2(self):
        # client就是个requests对象
        url="/bainianminguo/p/7253930.html"

        requests=self.client
        res = requests.get(url,data='', headers='', catch_response=True)

        print(res)


class WebSite(HttpUser):
    # 指定要执行哪个任务集
    # task_set = My_task_set
    task= [My_task_set, ]
    # 请求和请求之间最小的间隔时间
    min_wait = 1000
    # 请求和请求之间最大的间隔时间
    max_waif = 2000
    # 设置多少【秒】停止,是这个场景要跑多长的时间,如果不设置这个字段,脚本会一直运行
    stop_timeout = 300
    #请求的地址
    host="https://www.cnblogs.com/"

    #在脚本目录下命令行的启动命令:locust --host=host (前提:脚本名字叫locustfile.py,否知使用-f  命令指定脚本文件,脚本里没有定义host,需要启动locust时定义)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值