【发布时间】:2018-06-26 17:19:28
【问题描述】:
GUI 上的测试脚本完美运行,但在非 GUI 模式下却不行。Image showing Terminal test execution
说明:
我在测试计划中有 3 个线程组,其中第一个 Thread Group 创建了 3 个 .csv 文件,并预计将 CSV 文件中的数据提供给 second Thread Group。
对于少数测试运行,非 GUI 模式工作得很好,但是,像这样 [终端显示测试运行] 的测试间歇性地不会创建 CSV 文件,而且,
有时,第三个线程组根本不执行。
T他的问题我注意到的是:
-
在非 GUI 测试期间,文件没有被创建,这就是下一个线程组无法获取和使用
CSV文件中的变量以及 -
第二个可能是:我将文件夹和文件路径保存在 ${__setProperty(prop_folder_Path,${File_Path})} 并获取道具。
${__property(prop_folder_Path)}在另一个线程组中 -> 有时此属性函数不起作用,文件保存在/bin目录中有没有办法在 BeanShell POSTProcessor 中使用
${__property(prop_folder_Path)}值?
我相信任何在 GUI 中有效的东西在非 GUI 中也应该同样有效,对吗?
我刚刚注意到在非 GUI 中运行测试时在 /bin 文件夹as shown here 中创建了输出文件
任何解决此问题的建议。谢谢
【问题讨论】:
-
在提供的信息如此之少的情况下,您希望如何获得有用的答案?
-
如果您有兴趣回答,我已经编辑了帖子。谢谢
-
从您的最新解释看来,您的脚本中有一些相对路径(例如,您指定了文件名,但没有指定文件路径)。您永远不应该在自动化中使用相对路径,因为它与当前系统路径相关并且不可靠。始终在当前交互用户和以非交互方式启动工具的用户(不总是同一个用户)都具有权限的文件夹中提供绝对路径。例如。不是用户的主目录...
-
@Kiril S 感谢您的回顾和您的回复:这就是我设计路径的方式
import org.apache.jmeter.services.FileServer; //gets path of current jmeter's script String path = FileServer.getFileServer().getBaseDir()+File.separator+"Output"; File f = new File(path ); f.mkdirs(); vars.put("v_folder_path",path);我附加了路径 + file.separator + "new_file_name.csv" 我相信这可以减少手动工作并且易于追踪。我已经执行了相当多的测试运行并且它们是成功的。, -
嗯我不认为你的假设'//gets path of current jmeter's script'是正确的。查看代码,
FileServer.getFileServer().getBaseDir()默认情况下与System.getProperty("user.dir")相同,据我所知,仅由 GuiPackage 类更改为脚本路径,这可能解释了您在 gui 和非 gui 之间观察到的行为差异.但是你为什么要使用你无法控制的功能/位置呢?坚持系统默认设置不是更好吗,比如System.getProperty("java.io.tmpdir")?
标签: jmeter jmeter-plugins jmeter-4.0