Solución:
Aunque JSONPath Extractor no proporciona hasSize
función todavía se puede hacer.
Dado el JSON de ejemplo de la respuesta de PMD UBIK-INGENIERIE, puede obtener el número de coincidencias en book
matriz de al menos 2 formas:
1. La forma más fácil (pero frágil): utilizando Regular Expression Extractor.
Como puede ver, hay 4 entradas para category
igual que:
{ "category": "reference",
{ "category": "fiction"
...
Si agrega un Extractor de expresiones regulares configurado de la siguiente manera:
Capturará todos los category
entradas y devuelve el número de coincidencias como se muestra a continuación:
Entonces podrás usar esto ${matches_matchNr}
variable donde sea necesario.
Este enfoque es sencillo y fácil de implementar, pero es muy vulnerable a cualquier cambio en el formato de respuesta. Si espera que los datos JSON puedan cambiar en un futuro previsible, continúe con la siguiente opción.
2. Manera más difícil (pero más estable): llamar a métodos JsonPath desde Beanshell PostProcessor
JMeter tiene un mecanismo de extensión de scripting Beanshell que tiene acceso a todas las variables / propiedades en el alcance, así como a las API subyacentes de JMeter y dependencias de terceros. En este caso, puede llamar a la biblioteca JsonPath (que está bajo el capó de JsonPath Extractor) directamente desde Beanshell PostProcessor.
import com.jayway.jsonpath.Criteria;
import com.jayway.jsonpath.Filter;
import com.jayway.jsonpath.JsonPath;
Object json = new String(data);
List categories = new ArrayList();
categories.add("fiction");
categories.add("reference");
Filter filter = Filter.filter(Criteria.where("category").in(categories));
List books = JsonPath.read(json, "$.store.book[?]", new Filter[] {filter});
vars.put("JSON_ARRAY_SIZE", String.valueOf(books.size()));
El código anterior evalúa la expresión JSONPath de $.store.book[?]
contra la respuesta del muestreador principal, cuenta el número de coincidencias y lo almacena en ${JSON_ARRAY_SIZE}
Variable JMeter
que luego se puede reutilizar en una cláusula if o una aserción.
Referencias:
- JMeter – Trabajar con JSON – Extraer respuesta JSON
- Entrada de expresiones regulares del Manual del usuario de JMeter
- Documentación y ejemplos de rutas JSON
- Cómo usar BeanShell: el componente integrado favorito de JMeter