2011-09-06 16 views
14

Używam element zestawu danych config CSV, który odczytuje dane z pliku tak:Konfiguracja zestawu danych JMeter CSV: jak poruszać się po zmiennych w tym samym wątku?

abd 
sds 
ase 
sdd 
ssd 
cvv 

które, w zasadzie, ma liczbę 3 losowy ciąg liter.

Przypisuję je do zmiennej o nazwie ${random_3}.

Teraz chcę używać wartości z tej listy wiele razy w tym samym wątku, ale za każdym razem chcę przejść do następnego. Na przykład, chcę, aby pierwszy sampler używał abd, drugi używał sds, następnie ase itd. Ale jeśli po prostu używam ${random_3}, tylko pierwszy (abd) jest używany wszędzie tam, gdzie jest on przywoływany. Czy istnieje sposób, w jaki mogę określić, aby przechwytywać wartości z zestawu danych CSV w wątku?

Odpowiedz

32

CSV Data Set Config działa prawidłowo dla tego produktu. Wszystkie wartości muszą znajdować się w jednej kolumnie pliku i przypisać je do zmiennej zgodnie z opisem.

Utwórz grupę wątków, która ma tyle wątków dla tylu użytkowników, ile chcesz powtórzyć nad plikiem (tzn. Działając na żądaniu HTTP). Zakładając, 1 użytkownik, ustawić liczbę wątków na 1, pętla liczyć na 1.

Wewnątrz grupy wątku trzeba będzie dodać Loop Controller lub While Controller. Wskazałeś, że chcesz przechwycić cały zestaw danych. Jeśli dodasz kontroler pętli, powinieneś ustawić Liczbę pętli na 6, ponieważ masz 6 wartości, po jednej dla każdej wartości. Alternatywnie (i łatwiejsze przetwarzanie całego pliku) dodaj kontroler While zamiast kontrolera pętli i ustaw $ {random_3} jako warunek while.

Ważne jest, aby ustawić CSV zestaw danych recyklingu na EOF i temat zatrzymania na EOF wartości poprawnie. Jeśli planujesz iterować plik więcej niż jeden raz, musisz ustawić "Odzyskaj na EOF" na True (tj. Poinstruuj jMeter, aby powrócił na początek pliku CSV). Ustaw "Zatrzymaj wątek na EOF" na Fałsz jeśli używasz kontrolera pętli, true, jeśli używasz kontrolera while i chcesz zatrzymać po przeczytaniu całego zestawu danych CSV.

Dodaj konfigurację zestawu danych CSV jako element podrzędny kontrolera wraz z żądaniem HTTP. Zobacz wyniki za pomocą dowolnego słuchacza, którego chcesz użyć.

2

Zestaw danych CSV porusza się po pliku tylko wtedy, gdy rozpoczyna się iteracja każdego wątku.

Możesz użyć Raw Data Source PreProcessor do przeniesienia pliku z każdym żądaniem, to twoje rozwiązanie.

+0

Dziękuję, że wyglądam, ale nie wydaje mi się, że jest to bezpośrednio związane z moim przypadkiem użycia i trochę skrzypiące w ogóle. –

+0

Właściwie jest to rozwiązanie. Możesz zapytać na liście mailingowej projektu, jak dokładnie powinieneś go użyć, aby uzyskać to, czego chcesz. –

+0

Dzięki Andrey, sprawdzę to jeszcze raz. Moje zapotrzebowanie na tę część było dość proste i został rozwiązany przez prosty generator losowych ciągów w fasoli. –

1

Należy pamiętać, że w tej samej kolumnie należy podać wartości dla danej nazwy zmiennej.

idzie: abd sds ase sdd ssd cvv bardzo różni się od

abd 
sds 
ase 
sdd 
ssd 
cvv 

pierwsza posiada 6 zmiennych o jednej wartości każdy; drugi ma jedną zmienną z 6 wartościami.

+0

Tak, dziękuję, jestem tego świadomy, chciałem, aby były one przypisane do tej samej zmiennej (ale nowej wartości za każdym razem, gdy się odwołuje) –

1

Aktualizacja:

CSV Zbiór danych nie wydaje się być zbyt odpowiednie do tego celu.

Skończyłem na tworzeniu kilku prostych skryptów beanhell, które tworzą losowe 1, 2 lub 3-literowe słowo w razie potrzeby, a także inne, które odczytuje losowe słowa z dużego zestawu. W ten sposób za każdym razem, gdy są wywoływane, dają wartość losową. Nazywane są one tak:

${__BeanShell(getRandomStr(3))} 

lub

${__BeanShell(getRandomWord()) 
Powiązane problemy