2011-09-06 5 views
14

Io sto usando un elemento di set di dati di configurazione CSV, che sta leggendo da un file in questo modo:JMeter CSV Dataset Config: come spostarsi tra le variabili nello stesso thread?

abd 
sds 
ase 
sdd 
ssd 
cvv 

Il che, in fondo, ha una serie di 3 lettera stringa casuale.

Assegnandoli a una variabile denominata ${random_3}.

Ora, voglio utilizzare i valori da questo elenco più volte all'interno della stessa discussione, ma ogni volta che voglio passare a successivo. Ad esempio, desidero utilizzare il primo campionatore per abd, il secondo per utilizzare sds, quindi ase, ecc. Ma se utilizzo solo ${random_3}, viene utilizzato solo il primo (abd), ovunque venga indicato. Esiste un modo per specificare di scorrere i valori del set di dati CSV all'interno di un thread?

risposta

32

CSV Data Set Config funziona bene per questo. Tutti i valori devono trovarsi in una colonna del file e assegnarli alla variabile come descritto.

Creare un gruppo di thread che presenta il numero di thread per il numero di utenti che si desidera durante il iterazione sul file (ovvero che agisce sulla richiesta HTTP). Supponendo 1 utente, impostare il numero di thread da 1, ciclo contare fino a 1.

All'interno del gruppo di thread è necessario aggiungere un loop di controllo o un Mentre controller. Hai indicato che desideri scorrere l'intero set di dati. Se aggiungi un controller di loop, devi impostare il numero di cicli su 6, poiché hai 6 valori, uno per ogni valore. In alternativa (e più facile per l'elaborazione dell'intero file) aggiungi un controller While invece di un controller di loop e imposta $ {random_3} come condizione while.

E 'importante impostare il set di dati CSV Riciclare l'EOF e arresto Discussione valori correttamente sul EOF. Se si pianifica di eseguire iterazioni sul file più di una volta, è necessario impostare "Ricicla su EOF" su True (ad esempio, immettere jMeter per tornare all'inizio del file CSV). Impostare "Stop Thread on EOF" su False se si utilizza un controller di loop, true se si utilizza un controller while e si desidera interrompere dopo aver letto l'intero set di dati csv.

Aggiungere il CSV Data Set Config come figlio del controller insieme alla richiesta HTTP. Visualizza i risultati utilizzando qualsiasi listener che desideri utilizzare.

2

Il set di dati CSV si sposta attraverso il file solo all'avvio di ogni iterazione di thread.

È possibile utilizzare Raw Data Source PreProcessor per spostare il file throuhg con ogni richiesta, questa è la soluzione.

+0

Grazie, ho avuto un aspetto ma non sembra essere direttamente correlato al mio caso d'uso e un po 'complesso in generale. –

+0

In realtà è una soluzione. Puoi chiedere alla mailing list del progetto quanto dovresti usarlo per ottenere quello che vuoi. –

+0

Grazie Andrey, controllerò di nuovo. Il mio requisito per questa parte era abbastanza semplice ed è stato risolto da un semplice generatore di stringhe casuali in beanshell. –

1

Si noti che è necessario avere i valori per un determinato nome di variabile nella stessa colonna.

facendo: abd sds ase sdd ssd cvv è molto diverso da

abd 
sds 
ase 
sdd 
ssd 
cvv 

Il primo ha 6 variabili con un valore ciascuna; il secondo ha una variabile con 6 valori.

+0

Sì, grazie sono consapevole di questo, ho voluto loro di essere assegnati alla stessa variabile (ma un nuovo valore ogni volta che si fa riferimento) –

1

Aggiornamento:

CSV Dataset non sembra essere un adeguato troppo per questo scopo.

Ho finito per creare alcuni semplici script di beanshell che creano una parola casuale di 1, 2 o 3 lettere, se necessario, e anche un'altra che legge parole casuali da un set di grandi dimensioni. In questo modo, ogni volta che vengono chiamati danno un valore casuale. Essi sono chiamati in questo modo:

${__BeanShell(getRandomStr(3))} 

o

${__BeanShell(getRandomWord())