Je suis sûr que j'ai déjà fait cela dans le passé, mais je n'arrive pas à comprendre comment ;-) Alors, voici mon problème:
J'essaie de créer un plan de test JUnit dans lequel une requête HTTP est modifiée à chaque itération en modifiant un paramètre spécifique. Ainsi, par exemple, en cinq itérations, je souhaite que les requêtes HTTP suivantes soient effectuées:
http://localhost:8080/test/foo.html?id=1
http://localhost:8080/test/foo.html?id=2
http://localhost:8080/test/foo.html?id=3
http://localhost:8080/test/foo.html?id=4
...
Je souhaite configurer les valeurs d'identifiant globalement pour le plan de test et les utiliser dans l'échantillonneur de requêtes HTTP comme ceci:
Path: /test/foo.html?id=${categoryId}
La question maintenant: comment configurer les valeurs des identificateurs globalement (je fais pas je veux utiliser StringFromFile
) et comment les référencer dans l'échantillonneur?
Vous pouvez le faire de plusieurs manières.
Étant donné que vous avez un tableau de valeurs, vous pouvez:
Vous les référencez exactement comme vous l'avez indiqué: ${varName}
Concernant la mise en œuvre de ${__StringFromArrayAtRandomIndex('3', '2', '54', '42')}
.
Supposons que vous puissiez facilement implémenter votre scénario en utilisant par exemple BeanShell Sampler / BeanShell PostProcessor avec un peu de code.
Par exemple.:
Définissez votre variable source (par exemple, variables définies par l'utilisateur ):
Nom Valeur Catégories 3,2,54,42,37
(c.-à-d. utilisez une virgule comme délimiteur, sans espaces avant et après la virgule).
Utilisez add BeanShell Sampler/PostProcessor avec le code suivant:
import Java.util.Random; Chaîne [] catégories = (vars.get ("catégories")). split (","); int idx = new Random (). nextInt (categories.length); Chaîne category = (categories [idx]); vars.put (" catégorieId ", catégorie);
${categoryId}
.Pour obtenir une valeur de variable aléatoire à partir d'une liste, commencez par déclarer comme variables utilisateur la liste ou les valeurs disponibles, avec un préfixe et un index incrémentiel:
country_1 Spain
country_2 France
country_3 Portugal
country_4 Italy
country_5 England
Ensuite, vous pouvez obtenir une valeur aléatoire à partir de la liste concaténant le préfixe avec un index aléatoire dans l'intervalle:
${__V(country_${__Random(1,6,)})} --> "Spain", "France", "Portugal", etc...
Jetez un coup d'œil à cette réponse pour une explication complète.
La solution la plus simple sans variables peut être réalisée à l'aide de vars.getIteration()
:
/test/foo.html?id=${__groovy(vars.getIteration())}