Jmeter中使用py插件

-安装插件

1、下载插件jython-standalone-2.7.0.jar到jmeter的lib\ext目录下

链接:
https://pan.baidu.com/s/13ZXtUwoQEV62M98GaIR26w

提取码:ioyk

2、重启jmeter,查看是否生效,如果这个语言有python的选项说明可以了,注意这里支持的是python2,没有支持python3的插件呢(如果你没有安装py2,也不会有py2的选项)

 3、插件管理器下载插件(尽管没有搜索到对应的插件)

jmeter官网(除了慢没有毛病):Apache JMeter - Apache JMeter™

插件管理器下载地址:https://jmeter-plugins.org/install/Install/

然后我们将下载下来的jar包放入JMeter目录下的lib/ext目录,重启jmeter

然后我们会发现JMeter的选项下回多出一个新东西,这个就是我们的插件管理器了

虽然这里没有这个插件!!!!!哈哈哈哈哈

- 处理请求前参数

被测试接口中参数需要处理加工,利用JSR223 Sampler做入参处理,你要将控件放在http Request 控件之前

1、jmeter内置变量vars

你在用户参数中定义的参数都是放入jmeter的vars中的

获取参数:vars.get(参数名string类型)

放入参数:vars.put(参数名string类型,string类型的value)

2、其他代码参考python语法即可

我的示例:我把一些参数没有值的情况给予默认值,可做安全参数转化,特殊入参的拼接,直接上代码吧

import random
import redef tian_code(ctt):"""把入参做安全传输转化"""pattern1 = re.compile(r"\/")pattern2 = re.compile(r"[\'\"]")res = re.sub(pattern2,r"\'",ctt)res = re.sub(pattern1,r"\/",res)   return res
#一些固定值
vars.put("mode","strategy")
vars.put("pid","homework")
vars.put("token","200075")
vars.put("qid","${__Random(10000000,99999999,)}")
vars.put("rid","${__Random(10000000,99999999,)}")
#一些非固定值处理没有入参值时给如默认值
dict_param = {}
dict_param["uid"] = vars.get("uid")
dict_param["content"] = vars.get("content")
dict_param["avatar"] = vars.get("avatar")
dict_param["uname"] = vars.get("uname")
dict_param["title"] = vars.get("title")
dict_param["pic"] = vars.get("pic")
for k,v in dict_param.items():if not v:if k=="uid":dict_param[k]= str(random.randint(11111111,99999999))elif k =="pic":dict_param[k]= "https://b-ssl.duitang.com/uploads/item/201807/17/20180717232644_resnw.thumb.700_0.jpg"else:dict_param[k]= u"${__RandomString(11,unicode,)}"dict_param[k] = tian_code(dict_param[k])vars.put(k,dict_param[k] )#unique_key的拼接
unique_key = str(vars.get("pid"))+"_"+str(vars.get("token"))+"_"+ str(vars.get("qid")) +"_"+str(vars.get("rid"))+"_"+str(vars.get("uid"))
vars.put("unique_key",unique_key )

- 处理断言

1、在http请求控件右键添加JSR223Assertion

2、常用的内置参数

(1)获取http请求的结果:prev.getResponseDataAsString()

(2)修改请求断言结果:AssertionResult.setFailure(False)或者True

(3)修改断言失败信息:AssertionResult.setFailureMessage( u"失败\n"+vars.get("msg"))

(4)返回参数是json但是为字符串格式,转化的时候我用eval方式拿出参数,json包使用报错

图片

给予我自己的代码做参考:

log.info(u"+++++++++++{}_{}_处理结果+++++++++++++++".format(vars.get("Tname"), vars.get("ceshi")))
name = vars.get("Tname")
# setThreadName(u"{}".format(name))
response = prev.getResponseDataAsString()
log.info("response:" + response)
vars.put("result", response)def other_action(param, test):result_other = {}if isinstance(param, dict):for k, v in param.items():if v != "default" and k != test:result_other[k] = vreturn result_othermyResult = vars.get("result")
test = vars.get("ceshi")
res = eval(myResult)
error = str(res["errno"])
is_success = 1
errMsg = u""
action = ""
result_other = ""
if error == "0":result = eval(res["result"])action = result[test]if action not in ("PutFile", "DivertDel", "smartmis"):is_success = 0result_other = other_action(result, test)if action == "smartmis" and len(result_other) != 0:is_success = 0
else:is_success = 0errMsg = eval(str(res["result"]))
re = ""
if action:re += u"期望action({}_{}):{}".format(name, test, action)
else:re += u"期望action({}_{}):没有结果".format(name, test)
if result_other:re += u"其他命中策略有:{}".format(str(result_other))
if errMsg:re += u"错误日志是:{}".format(errMsg)vars.put("is_success", str(is_success))
vars.put("msg", re)log.info(u"+++++++++++{}_{}断言+++++++++++++++".format(name, test))
log.info(vars.get("is_success"))if (vars.get("is_success") == "1"):AssertionResult.setFailure(False)AssertionResult.setFailureMessage(u"成功\n" + vars.get("msg"))
else:AssertionResult.setFailure(True)AssertionResult.setFailureMessage(u"失败\n" + vars.get("msg"))
log.info(AssertionResult.getFailureMessage())#以下为数据库断言使用参数
if action == "smartmis":vars.put("dbNum", str(1))
else:vars.put("dbNum", str(0))

- 我们一起看看我的成果吧

 

调试的时候可以加一个Debug Sampler去看你所有的jmeter内置参数值,或者打开日志去看

失败的情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/233155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware虚拟机安装Linux操作系统

1.CentOS 7安装 软件选择,安装桌面系统 2.配置虚拟机网卡 3.连接Xshell

测试用例评审流程优化

测试用例评审是QA日常工作流程中的关键一环,是QA同学完善测试用例、交流测试经验的好机会。 负责组内测试用例建设以来,作者对于评审流程做了一些优化工作。本文作者将整个优化过程中的心得体会做了一个总结,希望能给大家带来帮助。 01 原始流…

Model-based value iteration and policy iteration pseudocode

Note that the symbols used in the pseudocode below have the following meanings: MDP: Markov Decision Process;V(s): Value function, the avg reture of one state;π(s): Policy, in the sense that for a given state s, π(s)represents the action that the agent …

【MySQL】 表的操作

// 创建表 create table 表名();// 查看表结构 desc 表名;// 新增一列表信息 alter table 表名 add 字段名 字段类型 (after 原表某一字段名);// 删除一列表信息 alter table 表名 drop 字段名;// 修改表字段名字 alter table 表名 change 原字段名 新字段名 类型; // 新字…

企业微信自动登录自定义系统

方法一:企业微信构造OAuth2链接跳转登录到自定义系统 企业微信自定义应用配置 构造网页授权链接 如果企业需要在打开的网页里面携带用户的身份信息,第一步需要构造如下的链接来获取code参数: https://open.weixin.qq.com/connect/oauth2/…

数据可视化---饼图、环形图、雷达图

类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…

【微服务】springboot整合minio详解

目录 一、前言 二、Minio 概述 2.1 Minio简介 2.1 Minio特点 三、Minio 环境搭建 3.1 部署过程 3.1.1 拉取镜像 3.1.2 启动容器 3.1.3 访问web页面 四、Minio基本使用 4.1 基本概念 4.2 上传文件演示 4.3 用户管理 4.4 Java操作Minio 4.4.1 导入依赖 4.4.2 上传…

MATLAB 平面拟合并可视化(34)

MATLAB 平面拟合并可视化(34) 一、效果二、代码一、效果 二、代码 % 生成三维点数据 x = rand(100, 1); y = rand(100, 1

Express及mongoose搭建数据库(增删改查)

express是什么? Express.js 是一个基于 Node.js 平台的 Web 应用程序框架,它旨在帮助开发者轻松构建和管理 Web 服务和应用程序。Express 提供了许多强大的功能,使得创建可扩展、灵活且高性能的 Web 应用变得相对容易。 安装Express步骤 确保…

棋牌的电脑计时计费管理系统教程,棋牌灯控管理软件操作教程

一、前言 有的棋牌室在计时的时候,需要使用灯控管理,在开始计时的时候打开灯,在结账后关闭灯,也有的不需要用灯控,只用来计时。 下面以 佳易王棋牌计时计费管理系统软件为例说明: 软件试用版下载或技术支…

LVS+Keepalived集群的介绍和搭建

目录 LVSKeepalived集群的介绍 Keepalived及其工作原理 Keepalived体系主要模块及其作用 一个合格的集群应该具备的特性 健康检查(探针)的方式 实验:搭建LVSKeepalived集群 实验准备 实验步骤 LVS 部署 配置节点服务器 实验验证 实…

【【UART 传输数据实验】】

UART 传输数据实验 通信方式在日常的应用中一般分为串行通信(serial communication)和并行通信(parallel communication)。 我们再来了解下串行通信的特点。串行通信是指数据在一条数据线上,一比特接一比特地按顺序传…

中英购物商城 中英文网店系统怎么选

中英文网店系统能帮助企业将商品卖到不同国家和地区,有效走出国门的工具,在选择中英购物商城时,需要考虑以下几个方面: 1、语言支持:选择一款能够支持中英文双语的购物商城系统是必要的,同时建议选择能确认…

数据结构--图(更新ing~)

树具有灵活性,并且存在许多不同的树的应用,但是就树本身而言有一定的局限性,树只能表示层次关系,比如父子关系。而其他的比如兄弟关系只能够间接表示。 推广--- 图 图形结构中,数据元素之间的关系是任意的。 一、图…

[PTA]分寝室

学校新建了宿舍楼,共有 n 间寝室。等待分配的学生中,有女生 位、男生 位。所有待分配的学生都必须分到一间寝室。所有的寝室都要分出去,最后不能有寝室留空。 现请你写程序完成寝室的自动分配。分配规则如下: 男女生不能混住&…

如何去掉视频中不想要的水印,分享几个视频去水印技巧给你

如何去掉视频中不想要的水印?视频中的水印往往会遮挡画面,降低观看体验。本文将为您介绍三种方法,帮助您轻松去除视频中的水印,以便更好地欣赏和分享视频内容。 视频去水印技巧一:使用水印云 是一款操作简便、功能强大…

【C语言初阶】数组

目录 一、一维数组的创建和初始化 1.1 数组的创建 1.2 数组的初始化 1.3 一维数组的使用 1.4 一维数组在内存中的存储 二、二维数组的创建和初始化 2.1 二维数组的创建 2.2 二维数组的初始化 2.3 二维数组的使用 2.4 二维数组在内存中的存储 三、数组越界 四、数组作…

智能高效的Go开发工具GoLand v2023.3发布,支持AI辅助编码!

GoLand 使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议,通过一步撤消快速安全重构,智能代码完成,死代码检测和文档提示帮助所有 Go 开发人员,从新手到经验丰富的专业人士,创建快速、高效、和可靠的…

图片速览 OOD用于零样本 OOD 检测的 CLIPN:教 CLIP 说不

PAPERCODEhttps://arxiv.org/pdf/2308.12213v2.pdfhttps://github.com/xmed-lab/clipn 文章创新 以往由CLIP驱动的零样本OOD检测方法,只需要ID的类名,受到的关注较少。 本文提出了一种新的方法,即CLIP说“不”(CLIPN)…

计算机基础,以及实施运维工程师介绍

目录 一.实施,运维工程师介绍 1.什么是实施工程师? 实施工程师职责 2.什么是运维工程师? 运维工程师职责 3.实施运维需要的技术 数据库 操作系统 网络 服务器 软件 硬件 网络 二.计算机介绍 CPU 存储器 io 总线 主板 三.操…