概要
本文主要介绍一个通过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取样器”,编写读取文件、写入文件代码。主要思路:读取模板文件内容,替换目标字符后,写入到新文件中;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | / / 模板文件位置 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(); |
3. 通过jmeter执行py脚本
添加“取样器>>BeanShell取样器”,通过cmd命令执行py脚本,并获得窗口输出信息;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | / / 以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脚本后生成的文件内容。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
qq群号:485187702【暗号:csdn11】
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】