2012-06-29 64 views
11

Tengo un muestreador jmeter personalizado escrito en java que toma la ubicación del archivo y la ruta del archivo como parámetros y basado en esos crea un archivo json para publicar en un servicio (basado en un archivo de plantilla) . Como mi script debe ejecutarse en múltiples entornos con estructuras de directorios variables, necesito usar una ruta relativa en mi muestra para apuntar al archivo que necesito traducir a json válido. ¿Hay alguna manera de obtener el directorio donde vive mi script como una variable en jmeter? He intentado con $ {user.dir}, pero eso devuelve el directorio desde el que se inició el jmeter, no el directorio donde vive mi script. ¿Hay alguna otra propiedad del sistema que pueda consultar para obtener este valor? Si no, ¿alguien ha logrado esto programáticamente?Cómo obtener el directorio del script jmeter en Jmeter

+0

¿Ha probado alguna de las soluciones enumeradas en http://stackoverflow.com/questions/9179463/access-to-jmeter-script-path? – DComte

Respuesta

28

Me encontré con una situación similar hace un tiempo en la que tuve que cargar un archivo de firma como parte de una solicitud POST. Este archivo de firma vivió en relación con la estructura de la carpeta en la que se ubicaron mis scripts de JMeter.

Intente utilizar la siguiente expresión de BeanShell (a la que puede accederse como una propiedad a nivel de sistema) para resolver la ruta relativa desde la ubicación en la que se ubican/ejecutan sus JMeter test-cases.

${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)} 
  • Puede introducir esto con el nombre del archivo que desea enviar/POST en el campo "Enviar Archivos con la Solicitud" simplemente añadiendo el nombre del archivo.

    ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}fileName.sig

  • Una implementación más limpia sería declarar esto como una variable (dependiendo local o mundial en el ámbito de aplicación) y utilizar esta variable dentro de los campos correspondientes.

    absolutePath = ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}

    ${absolutePath}fileName.sig

NOTA: Este enfoque es súper útil si va a conectar los archivos de prueba de JMeter en un sistema de integración continua como Jenkins. Hace que tus casos de prueba sean más fáciles de mantener.

+0

Estoy obteniendo la ruta del archivo a través de la sintaxis dada (Diga: C: \ Users \ test.xlsx) y almacenado en la variable. Pero cuando utilicé la misma variable en los archivos de clase de E/S de Java (FileInputStream) para leer el contenido, recibo errores. Cuando depuré, encontré el problema del corte hacia atrás. No se pudo pasar la misma variable a la clase FileInputStream. ¿Hay algún enfoque para cambiar el separador de archivos a barra diagonal? – Manigandan

+1

str = str.replace ("\\", "/"); ? – stuxnetting

+0

No está funcionando. – Manigandan