Nuestro team de redactores ha estado por horas investigando soluciones a tus preguntas, te ofrecemos la resolución por eso deseamos servirte de mucha apoyo.
Solución:
Usé la respuesta proporcionada por haridsv. Funcionó muy bien, excepto que necesitaba colocar el directorio en el archivo JMX en una variable. Hice un componente de “Variables definidas por el usuario” y usé BeanShell en el campo “Valor” de la variable de esta manera:
$__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)$__BeanShell(File.separator,)
La primera sección BeanShell llama a la clase Java que obtiene el directorio en cuestión. El segundo agrega un separador de archivos a la ruta, que por supuesto es opcional.
-
Incluir controlador
Según la referencia del componente:Este elemento no admite variables/funciones en el campo de nombre de archivo.
Sin embargo, si la propiedad incluye controlador.prefix se define, los contenidos se utilizan para prefix el nombre de la ruta Si el archivo no se puede encontrar en la ubicación dada por prefix+nombre de archivo, luego el controlador intenta abrir el nombre de archivo relativo al directorio de inicio de JMX (versiones de JMeter posteriores a la 2.3.4).Puede pasarle a JMeter una propiedad java llamada includecontroller.prefix
que se puede usar para anteponer un directorio al archivo JMX que está incluyendo.1) En caso de uso de lanzamiento de consola:
-Jincludecontroller.prefix=/full/path/to/jmx/scripts/dir/
2) en el caso de GUI, agregue lo mismo al archivo .sh/.cmd/.bat o escriba un archivo contenedor;
3) en el caso del uso de Jmeter Ant Task, establezca como propiedad separada:
-
Configuración del conjunto de datos CSV
Según la referencia del componente:Los nombres de archivo relativos se resuelven con respecto a la ruta del plan de prueba activo.
También se admiten nombres de archivo absolutos, pero tenga en cuenta que es poco probable que funcionen en modo remoto, a menos que el servidor remoto tenga la misma estructura de directorios. Si el mismo archivo físico es referenciado de dos maneras diferentes – por ejemplo csvdata.txt y ./csvdata.txt – entonces estos son > > tratados como archivos diferentes. Si el sistema operativo no distingue entre mayúsculas y minúsculas, csvData.TXT también se abriría por separado.Puede declarar una variable del plan de prueba que recupera el valor del parámetro con la carpeta que contiene archivos de datos csv:
p.ejcsv.path | $__P(csv.path, $__property(user.dir)$__BeanShell(File.separator,))
CSV Data Set Config Filename = $csv.path$__P(users-list,)
Configuración desde la consola:
-Jcsv.path=/full/path/to/csv/data/dir/
Configuración para la configuración de pruebas distribuidas:
-Gcsv.path=/full/path/to/csv/data/dir/
Al decir “ruta física absoluta del script actual”, supongo que OP se refiere a la ubicación desde donde se carga el plan de prueba (archivo jmx). Necesitaba exactamente esto para generar un archivo CSV desde el script BeanShell al comienzo de la ejecución, que posteriormente se usa en una configuración de conjunto de datos CSV para volver a leer, así que quería que el script funcionara de la misma manera que funciona más tarde cuando no hay una ruta. especificado. Revisé la fuente de JMeter y encontré esta solución funcional:
import org.apache.jmeter.services.FileServer;
log.info(FileServer.getFileServer().getBaseDir());
Probé esto y vi la ruta correcta en jmeter.log.