51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 567|回复: 1
打印 上一主题 下一主题

执行python脚本在性能工具jmeter中实现!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-24 15:48:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 草帽路飞UU 于 2022-8-25 16:51 编辑

目录
  • 概要
  • 一、环境准备
  • 1. 测试工具
  • 2. 测试资源
  • 二、实现过程
  • 1. 在jmeter中设置参数
  • 2. 通过jmeter修改py模板
  • 3. 通过jmeter执行py脚本
  • 4. 使用获得的输出信息
  • 三、运行调试
  • 1. 运行前
  • 2. 运行后

概要

本文主要介绍一个通过jmeter执行python脚本的测试场景。主要过程如下:

  • 在jmeter中设置参数;
  • 通过jmeter修改py模板文件,并创建后续需执行的py脚本;
  • 通过jmeter执行py脚本文件,获得py文件的执行输出结果,并设置为变量;
  • 使用变量进行后续测试。

一、环境准备
1. 测试工具
jmeter、python,与版本无关,任意版本均可。

2. 测试资源
py模板文件:
1)自定义需要在py模板文件中修改的参数,比如:我们想在jmeter中修改py脚本中某些变量的初始值,我们可以在采用特殊标记[变量名]的方式标记其为可替换变量;
2)使用print()方法打印输出目标参数。也可以采用其他方法,比如将多个变量值写入到csv文件中,后续可以使用csv文件进行参数化。
图-变量设置:[times]、[modelName]、[modelType]
图-输出设置:print(filepath)

二、实现过程

1. 在jmeter中设置参数

如图,可以选择添加“前置处理器>>用户参数”,用于设置相关变量的初始值;


2. 通过jmeter修改py模板


添加“取样器>>BeanShell取样器”,编写读取文件、写入文件代码。主要思路:读取模板文件内容,替换目标字符后,写入到新文件中;
// 模板文件位置
String read_path = vars.get("dir") + File.separator + "files\\mkxml\\template_demo.py";
// 输出文件位置
String write_path = vars.get("dir") + File.separator + "files\\mkxml\\demo.py";


// 读取模板文件内容
StringBuffer res = new StringBuffer();
String line = null;
File read_file = new File(read_path);
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(read_file), "UTF-8"));
while ((line = reader.readLine()) != null) {
        res.append(line + "\n");
}
reader.close();


// 处理模板内容,替换相关参数
String content = res.toString();
content = content.replace("[times]", vars.get("times"));
content = content.replace("[modelName]", vars.get("modelName"));
content = content.replace("[modelType]", vars.get("modelType"));


// 写入内容到输出文件位置
File write_file = new File(write_path);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(write_file), "UTF-8"));
writer.write(content);
writer.flush();
writer.close();















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2022-8-24 15:54:11 | 只看该作者
本帖最后由 草帽路飞UU 于 2022-8-25 16:52 编辑

3. 通过jmeter执行py脚本

添加“取样器>>BeanShell取样器”,通过cmd命令执行py脚本,并获得窗口输出信息;

// 以cmd命令行方式调用py脚本,&&为多组命令连接符

String cmd = "cmd /c cd /d "+ vars.get("dir") + File.separator + "files\\mkxml && python demo.py";

Runtime rt = Runtime.getRuntime();

Process pr = rt.exec(cmd);


pr.waitFor();


BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));

String line = "";

StringBuilder response = new StringBuilder();


while((line = br.readLine()) != null) {

        response.append(line);

}


br.close();


// 设置成可在jmeter中使用的变量,filepath为目标XML文件所在位置

vars.put("filepath", response.toString());


4. 使用获得的输出信息

后续需要使用输出变量时,可以通过${变量名}的形式进行参数化。



三、运行调试

添加“后置处理器>>调试后置处理程序”及“监听器>>察看结果树”,启动脚本运行。


1. 运行前

模板文件;



2. 运行后

1)新建的py文件,xml文件;


2)察看结果树的调试结果;



3)执行py脚本后生成的文件内容。



完成




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 01:31 , Processed in 0.063736 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表