场景链路压测的时候通常都是按照用户实际使用流程进行压测,同接口自动化一样,一定会涉及到数据依赖的问题

1.举例
  • Django后台通常需要csrf验证,而一般csrftoken需要通过get接口获得
from locust import HttpUser, task, between
from lxml import etree USER_CREDENTIALS = [
("login1", "pwd1"),
("login2", "pwd2"),
("login3", "pwd3"),
] # 登录账户 csrf_token = [] class LoginDemo(HttpUser):
wait_time = between(2, 5) # 模拟用户等待2到5s然后执行 @task(1)
def on_start(self): # 任务开始时准备
header = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/83.0.4103.61 Safari/537.36 "
} # 请求头 # 获取csrf
r_get = self.client.get("user/login/") # 从返回的html页面中,解析出 csrfmiddlewaretoken
dom = etree.HTML(r_get.content.decode("utf-8"))
try:
csrf_token['csrfmiddlewaretoken'] = dom.xpath('//input[@name="csrfmiddlewaretoken"]')[0].get("value")
print(csrf_token)
except:
print('参数csrfmiddlewaretoken获取失败!') if len(USER_CREDENTIALS) > 0:
user, pwd = USER_CREDENTIALS.pop() # 取出账户名密码 r_post = self.client.post("user/login/", {
"token": 'TOKEN', # TOKEN
"username": user, # 用户名
"password": pwd, # 密码
"next": ""
}, header=header
) assert r_post.status_code == 200 # 断言请求返回200 print(r_post.status_code, r_post.text[:1000]) # 打印状态码及返回text @task(2)
def view_index(self):
print('访问首页')
r = self.client.get("/index/") print(r.status_code) @task(6)
def view_tag(self):
print('访问标签页')
r = self.client.get("/tag/") print(r.status_code) if __name__ == "__main__":
import os os.system("locust -f demo.py --host=URL") # 需要测试的地址
  • 这里我们使用了etree 来获取get接口返回的数据
2.更新请求头
self.client.headers.update(header)
3. 数据依赖
  • 转化接口返回数据,然后获得
import json

@task(2)
def view_index(self):
r = self.client.get("/index/")
response = json.loads(r.text)
demo = response['取值'] # 假如取demo
print("===>", response['取值'], type(response)) # 取值 self.client.get('index/url/{}/'.format(demo))
4. 小结

Locust性能测试3--参数化、数据依赖的更多相关文章

  1. Python Locust性能测试框架实践

    [本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...

  2. Locust性能测试

    https://www.cnblogs.com/yoyoketang/p/9638151.html https://www.cnblogs.com/yoyoketang/p/9642242.html ...

  3. python locust 性能测试:locust安装和一些参数介绍

    安装参考 https://www.cnblogs.com/fnng/p/6081798.html <虫师大大的,很详细> ps:python3.7暂不支持locust:python3安装建 ...

  4. Locust性能测试4-参数关联

    前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...

  5. Locust性能测试6-命令行参数详解

    前言 当我们在linux上使用locust工具压测的时候,会使用no-web模式,然后需要收集运行的日志,方便查找问题. 命令行参数 输入locust --help 查看所有的命令行参数 > l ...

  6. Locust性能测试_参数关联

    前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...

  7. Locust性能测试_先登录场景案例

    前言 有很多网站不登录的话,是无法访问到里面的页面的,这就需要先登录了实现场景:先登录(只登录一次),然后访问页面->我的地盘页->产品页->项目页 官方案例 下面是一个简单的loc ...

  8. Locust性能测试_百度案例

    一.安装: 1.Locust在PyPI上可用,可以通过pip或easy_install安装:pip install locustio                2.查看Locust可用选项:loc ...

  9. locust性能测试脚本模板

    locust性能测试脚本模板 #!/usr/bin/env python # -*- coding: utf-8 -*- import time from locust import HttpLocu ...

  10. Locust性能测试工具核心技术@task和@events

    Tasks和Events是Locust性能测试工具的核心技术,有了它们,Locust才能称得上是一个性能工具. Tasks 从上篇文章知道,locustfile里面必须要有一个类,继承User类,当性 ...

随机推荐

  1. Linux系统zabbix_agentd客户端安装与配置

    标注:官网下载zabbix安装包(zabbix安装包里包含了zabbix_agentd客户端安装包,我们只选择zabbix_agentd客户端安装) zbbix官网下载地址:  http://www. ...

  2. Python os.lchmod() 方法

    概述 os.lchmod() 方法用于修改连接文件权限.高佣联盟 www.cgewang.com 只支持在 Unix 下使用. 语法 lchmod()方法语法格式如下: os.lchmod(path, ...

  3. PHP fread() 函数

    定义和用法 fread() 函数读取打开的文件. 函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行. 该函数返回读取的字符串,如果失败则返回 FALSE. 语法 string ...

  4. PDOStatement::errorCode

    PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 st ...

  5. 6.29 省选模拟赛 坏题 AC自动机 dp 图论

    考场上随手构造了一组数据把自己卡掉了 然后一直都是掉线状态了. 最后发现这个东西不是subtask -1的情况不多 所以就没管无解直接莽 写题有点晚 故没调出来.. 考虑怎么做 容易想到建立AC自动机 ...

  6. 每日一道 LeetCode (5):最长公共前缀

    前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee: https://gitee.com ...

  7. datagrip安装与破解

    datagrip下载 从官网下载的dataGrip可以免费使用30天,如果已经破解过或者付费过的小伙伴可以跳过这个章节.对于未安装软件的小伙伴,博主这里收集了dataGrip的破解教程,扫描底部博主的 ...

  8. MySql大表分页(附独门秘技)

    问题背景 MySql(InnoDB)中的订单表需要按时间顺序分页查询,且主键不是时间维度递增,订单表在百万以上规模,此时如何高效地实现该需求? 注:本文并非主要讲解如何建立索引,以下的分析均建立在有合 ...

  9. MVC + EFCore 项目实战 - 数仓管理系统9 - 数据源管理完结篇

    我们完成数据源管理的剩余部分:点击表名,预览表中数据. 我们需要完成的是下图的方框部分. 考虑到这块以后可能复用,我们将她独立出来,做成 view component. 新建 view compone ...

  10. Android html5和Android之间的交互

    今天补充了会昨天的问题,然后搞半天又出现莫名其妙的问题. 今天讲的是交互,先说html5在Android的调用. 上面的hello world上面的部分都是安卓里的布局 然后按这些布局自动生成代码. ...