Według dokumentacji JMeter:
16.12 zmienne Współdzielenie pomiędzy wątkami i grup nici
zmienne są lokalne dla wątku zmienna zestaw w jednym wątku nie może być odczytany w innego. Jest to zgodne z projektem. W przypadku zmiennych, które można określić przed rozpoczęciem testu, patrz Parameterising Tests (powyżej). Jeśli wartość nie jest znana aż do rozpoczęcia testów, istnieją różne opcje:
- przechowywać zmienna jako własność - właściwości są globalne do instancji JMeter
- zmienne zapisać do pliku i ponownie przeczytać im.
- Użyj nazw bsh.shared - patrz 16.8.2 Sharing Variables
- Napisz własne klasy Java
Innym sposobem przekazać zmienną między wątków jest użycie jmeter-plugins jako mentioned by Andrey Botalov below.
Ale odkryłem, że używanie go po raz pierwszy jest nieco mylące, ale daje pełną kontrolę nad zmienną podczas przejścia z wątku na wątek. za moim przykładem z wykorzystaniem BeanShell i zobaczysz jak łatwo jest:
Następnie odnosząc się do odcinków na zdjęciu poniżej:
(1,1) Oto stworzyłem zmienną niestandardową w Użytkownik zdefiniowanych zmiennych (lub można zrobić to z BSF proccessor - niepełnosprawnych w tym przykładzie (1.2))
(2,1) (2,4) z powodzeniem stosować zmienną w pierwszym wątku - nic specjalnego :)
(2,2) Dodany BeanShell postprocesora i dostosowane moja zmienna
(2.3) Dodano do kolejki
(3.1) W drugim wątku - zmienna jest pobierana z kolejki - z dowolną nazwą.Ale bądź ostrożny, używaj rozsądnie limitu czasu, ponieważ ten wątek będzie czekał aż do poprzedniego zakończenia, aby mógł uzyskać zmienną zmienną (eksperyment z długą odpowiedzią)
(3.2) (3.3) (3,4) Te powtarzające się kroki używania i zmodyfikowanie zmiennej
(3.5) zmienna jest przesyłana ponownie w nowej kolejki - tak stanowią nową nazwę do niego
(4,1) (4,2) (4,3) Wzięłam zmodyfikowana zmienna od nowej kolejki działa jak uroku
Ostrzeżenie:
Jeśli dodasz więcej wątków, dodaj trochę licznika do grupy wątków ze zmienną i dodaj tę nazwę zmiennej do nazwy kolejki - zrób to samo w grupie wątków, w której próbujesz przechwycić kolejkę, aby kolejka miała unikalną nazwę dla każdego wątku (napisz komentarz, jeśli potrzebujesz wyraźniejszego wyjaśnienia)
Jeśli masz więcej niż jedno żądanie HTTP w jednej grupie wątków, dodaj procesor wstępny komunikacji wątkowej jako dziecko ostatniego (lub innego, jeśli chcesz osiągnąć jakąś niestandardową rzecz).
Graj, modyfikuj, dostosowuj, aby uzyskać najlepszy rezultat :) Dodawanie kolejnych wątków może spowodować niepożądane zachowanie, więc możesz d być czujnym.
Zbyt złe właściwości nie mogą przechowywać obiektów ...faktycznie wydaje się, że 'get()' i 'put()' metody są nadal dostępne z HashTable. Czy byłoby bardzo źle, jeśli nadużywałam właściwości jmetera do przechowywania wartości obiektów? Mój problem polega na tym, że chcę, aby wszystkie wątki udostępniały ten sam obiekt, aby uniknąć tworzenia wielu obiektów, gdy uruchamiam wiele wątków. – akostadinov
wielkie dzięki. Pracował dla mnie jak urok! –
Połów tutaj. __setProperty jest wywoływane przed przekazaniem skryptu do BeanShell. Więc jeśli próbujesz przypisać wartość do zmiennej z fasoli, nie byłbyś w stanie uzyskać wartości –