validate how data body jmeter assertion

how - JMeter cómo NO fallar 500 errores internos del servidor



jmeter assert response body (4)

Estoy usando JMeter como una herramienta de prueba unitaria, en llamadas parametrizadas donde espero que algunas de las respuestas sean 500 errores internos del servidor. Estoy usando Afirmaciones de BeanShell para verificar las respuestas.

Quiero que algunos de los 500 errores internos del servidor NO se marquen como fallas si la respuesta contiene un texto específico. Los 500 errores del servidor están marcados como fallas. ¿Es posible cambiar el comportamiento?

A continuación se muestra un extracto de la Afirmación de BeanShell.

if (ResponseCode.equals("500")) { Failure = false; String respData = new String(ResponseData); if (! respData.contains("specific Text")) { Failure = true; FailureMessage = "500 Internal Server Error: Unexpected Response. " + "Response Message: " + respData; } }

Gracias y saludos


Otra posible solución es usar la afirmación de respuesta con el indicador "Ignorar estado" marcado que se agrega a su muestra:

Ignorar el estado
Le indica a JMeter que configure el estado al éxito inicialmente.

El éxito general de la muestra se determina combinando el resultado de la afirmación con el estado de respuesta existente. Cuando se selecciona la casilla de verificación Ignorar estado, el estado de Respuesta se fuerza a tener éxito antes de evaluar la Afirmación.

Las respuestas HTTP con estados en los rangos 4xx y 5xx normalmente no se consideran correctas. La casilla de verificación "Ignorar estado" se puede usar para establecer el estado exitoso antes de realizar más comprobaciones. Tenga en cuenta que esto tendrá el efecto de borrar cualquier error de aserción anterior, por lo que debe asegurarse de que solo esté configurado en la primera aserción.


Con una afirmación de BeanShell, fuerce a la Muestra de HTTP para que pase y luego apruebe / falle en una declaración de afirmación de Beanshell normal en su lugar:

if (ResponseCode.equals("500") == true) { SampleResult.setResponseOK(); /* the same is SampleResult.setSuccessful(true); SampleResult.setResponseCodeOK(); SampleResult.setResponseMessageOK(); */ } String path = SampleResult.getURL().getPath(); if (!path.contains("anerror")) { Failure = true; FailureMessage = "URL Path: didn''t contain /"anerror/"" + System.getProperty("line.separator") + "URL Path detected: " + path; }


Agregue una "Afirmación de respuesta" después de la solicitud que desea aprobar y marque la casilla de verificación "Ignorar estado".


La solución más simple a continuación:

  • https://.com/a/9931570/460802

si quiere hacer otras cosas en el código, entonces: Acceda y modifique SampleResult para cambiar el estado de "FAIL" a "PASS" si el código es 500 - de su Afirmación BeanShell / Afirmación BSF o utilice BeanShell PostProcessor / BSF PostProcessor en su lugar - todos ellos tienen acceso al Objeto SampleResult.

1. Afirmación de BeanShell

if (ResponseCode.equals("500") == true) { SampleResult.setResponseOK(); /* the same is SampleResult.setSuccessful(true); SampleResult.setResponseCodeOK(); SampleResult.setResponseMessageOK(); */ }

2. BeanShell PostProcessor
Use prev lugar - para acceder al objeto SampleResult de la muestra al que está conectado un post-procesador:

if (prev.getResponseCode().equals("500") == true) { prev.setResponseOK(); /* the same is prev.setSuccessful(true); prev.setResponseCodeOK(); prev.setResponseMessageOK(); */ }