【发布时间】:2019-04-26 05:40:30
【问题描述】:
这是我的目标:
让测试计划在 win 和 mac 上都更加灵活和可用(因为有些人使用 mac,而其他人使用 win)。
我在 groovy 中创建了这个简单的脚本:
import org.apache.jmeter.services.FileServer;
import groovy.json.JsonSlurper;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
String winPath;
String macPath;
String winSlash;
String macSlash;
String userPath;
String userSlash;
if (System.properties['os.name'].toLowerCase().contains('windows')) {
winPath="C:\\QA\\";
winSlash="\\";
vars.put("userPath",winPath.toString());
}
if (System.properties['os.name'].toLowerCase().contains('mac')) {
macPath="/Users/macUser/QA/";
macSlash="/";
vars.put("userPath",macPath.toString());
}
并将其添加到我的线程组对象下的“JSR223 Sampler”对象中
然后我添加了一个带有以下 var 的“用户定义的变量”对象:
Name value
projectDir myProjectDir
rootPath ${__groovy(props.getProperty("userPath"))}${projectDir}
然后我尝试使用 rootPath 变量来设置我的 csv 文件的路径,所以我在“CSV 数据集配置”对象中添加了 ${projectDir}/AUTH.csv 到 FileName,但我收到了这条消息:
2018-11-23 16:36:40,634 DEBUG o.a.j.t.TestBeanHelper: Ignoring property 'property' in org.apache.jmeter.config.CSVDataSet
2018-11-23 16:36:40,634 DEBUG o.a.j.t.TestBeanHelper: Setting filename=myProjectPath/AUTH.csv
2018-11-23 16:36:40,634 DEBUG o.a.j.t.TestCompiler: Subtracting node, stack size = 2
2018-11-23 16:36:40,634 DEBUG o.a.j.t.TestCompiler: Subtracting node, stack size = 1
2018-11-23 16:36:40,634 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-1
2018-11-23 16:36:40,634 INFO o.a.j.s.FileServer: Stored: myProjectPath/AUTH.csv
2018-11-23 16:36:40,635 ERROR o.a.j.t.JMeterThread: Test failed!
java.lang.IllegalArgumentException: Could not read file header line for file myProjectPath/AUTH.csv
如您所见,它试图读取myProjectPath/AUTH.csv,然后当然会出现异常..
为什么它不“读取”变量 rootPath ?
有什么建议吗?
【问题讨论】: