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();
*/
}