locust入门 —— 实战脚本开发

本文介绍了一种使用Locust进行微信公众号接口压力测试的方法。首先在on_start方法中获取access_token,然后在create_tags任务中利用access_token创建随机标签,并在on_stop方法中检查标签创建是否成功。代码示例展示了如何实现这一流程,包括定义HttpUser和TaskSet类,以及处理登录、创建标签和查询标签的过程。此外,还提供了Python基础语法的运用示例,并附赠了软件测试相关的学习资源。

我们已经把基础知识都了解了,现在就可以进入实战脚本开发,看一下效果了。我们还是用微信公众号提供的接口,有兴趣的可以复制下面代码,可以直接在本地执行了。

我们先分析一下需求,我们的目标是压测创建标签接口,这个接口有一个条件,就是首先要登录,就是获取access_token。所以我们在写创建标签以前要先获取access_token,可是如果每次执行都先登录,那就成了压测登录+创建标签两个接口了,这样很难看到单个接口的真实数据。所以我们得这样写:

  • 先执行获取access_token接口,获取access_token

  • 把access_token传到创建标签接口,实现创建标签

  • 创建标签名不能重复,所以要把标签名设置成变化的。

  • 最后可以查询一下标签,看是否创建成功

这里还有一点要注意,就是我们模拟多用户的时候,这些用户都是并行的,模拟了多少个用户,on_starton_stop就会执行多少次。

代码:

# coding: utf-8

import random
from locust import HttpUser, task, between, TaskSet


class TokenTask(TaskSet):

    token = None

    def on_start(self):
        data = {'appid': 'wx4d8f7de320aca501',
                'secret': 'd096e22047235cad799d917a517c6246',
                'grant_type': 'client_credential'}
        with self.client.request('POST',
                                 '/cgi-bin/token',
                                 params=data,
                                 verify=False,
                                 name='获取access_token') as res:
            access_token = res.json()['access_token']
            print(access_token)
            self.token = access_token

    @task
    def create_tags(self):
        print("执行create_tags方法")
        s = random.randint(1, 100)
        data = {"tag": {"name": f"Beijing{s}"}}
        with self.client.request('POST',
                                 '/cgi-bin/tags/create?access_token=' + self.token,
                                 json=data, name='新建标签') as r:
            print(r.text)

    def on_stop(self):
        with self.client.request('POST',
                                 '/cgi-bin/tags/get?access_token=' + self.token,
                                 name='查询标签') as r:
            print(r.text)


class QuickstartUser(HttpUser):
    tasks = [TokenTask]
    host = "https://api.weixin.qq.com"
    wait_time = between(1, 2)

执行文件:locust -f testindex.py可以看到

locust结果

locust图表

Pycharm执行返回

代码分析:我们定义了两个类TokenTask继承TaskSetQuickstartUser继承HttpUser

QuickstartUser类中定义了任务类host地址、wait_time等待/思考时间。

TokenTask这是我们的任务类。为了方便调用,先定义了一个空的token

然后已知登录只需要在开始时执行一次,所以我获取access_token接口定义在了on_start里面,然后把接口需要的参数通过self.client.request进行传递,直接self.client.get/post也可以,只是这样写我觉得更清晰,而且locust也更支持。

request中增加了一个name参数,这样你在web端看的时候就不显示具体的接口地址而是显示这个name名了。

在创建标签create_tags中定义了一个变量s,它是1-100之间的随机数,然后在data数据中进行了调用。f"文字{变量}"这种写法就可以直接引用变量,这是Python的基础语法,不需要多解释,最后发送一下请求。

on_stop方法中又增加了一个查询的接口请求,以便确认创建标签成功了。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走


在此特意为大家准备了一份13G的超实用干货学习资源,涉及的内容非常全面,涵盖功能测试、Python编程语言,接口测试、UI自动化测试、性能测试......包括软件学习路线图,50多天的上课视频、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2022软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助…..关注下方公众号免费获取~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值