我们已经把基础知识都了解了,现在就可以进入实战脚本开发,看一下效果了。我们还是用微信公众号提供的接口,有兴趣的可以复制下面代码,可以直接在本地执行了。
我们先分析一下需求,我们的目标是压测创建标签接口,这个接口有一个条件,就是首先要登录,就是获取access_token。所以我们在写创建标签以前要先获取access_token,可是如果每次执行都先登录,那就成了压测登录+创建标签两个接口了,这样很难看到单个接口的真实数据。所以我们得这样写:
-
先执行获取access_token接口,获取access_token
-
把access_token传到创建标签接口,实现创建标签
-
创建标签名不能重复,所以要把标签名设置成变化的。
-
最后可以查询一下标签,看是否创建成功
这里还有一点要注意,就是我们模拟多用户的时候,这些用户都是并行的,模拟了多少个用户,on_start和on_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继承TaskSet,QuickstartUser继承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软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助…..关注下方公众号免费获取~

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

被折叠的 条评论
为什么被折叠?



