JDBC 결과 집합 변수 및 카운터 변수를 사용한 JMeter 중첩 변수 참조
-
21-12-2019 - |
문제
siteID 및 siteURL 목록을 확인하기 위해 MYSQL 데이터베이스를 쿼리해야 합니다.JDBC 요청의 변수 이름 필드에 이러한 이름을 지정했습니다.
그런 다음 다음과 같이 결과의 마지막 레코드까지 siteURL ${siteURL_1}을 순환하는 ForEach 논리 컨트롤러를 만들었습니다.
Input Variable Prefix: siteURL
Start Index: 0
End Index: 40
Output Variable Name: newSiteURL
그런 다음 HTTP 요청의 경로 필드에서 이를 다음과 같이 사용합니다.
${newSiteURL}
이것은 잘 작동하며 HTTP 요청이 진행됩니다.
이제 더 나은 인덱싱을 위해 HTTP 요청의 이름을 적절하게 지정하고 싶습니다.이를 위해 결과 집합의 siteID 필드를 사용하기로 결정했습니다.
이를 위해 다음과 같은 카운터 변수를 만들었습니다.
Start: 1
Increment: 1
Maximum: 40
Reference Name: siteIndex
이제 해당 HTTP 요청의 결과 표시에서 siteID를 가져오기 위해 HTTP 요청의 이름 필드를 다음과 같이 편집했습니다.
${siteID_"({siteIndex})"}
하지만 결과 보기 트리의 HTTP 요청은 여전히 다음과 같이 표시됩니다.
${siteID_"({siteIndex})"}
${siteID_"({siteIndex})"}
${siteID_"({siteIndex})"}
${siteID_"({siteIndex})"}
${siteID_"({siteIndex})"}
...
다음과 같이 HTTP 요청의 해당 siteURL에 대한 실제 siteID가 아닙니다.
21231
12315
21654
64574
76876
...
해결책
이 비트를 변경해야 합니다.
${siteID_"({siteIndex})"}
에게
${__V(siteID_${siteIndex})}
설명:
에 따라 __V 함수 문서
예를 들어 변수 A1,A2 및 N=1이 있는 경우:
${A1} - 잘 작동합니다
${A${N}} - 작동하지 않습니다(중첩 변수 참조).
${__V(A${N})} - 정상적으로 작동합니다.A${N}은 A1이 되고 __V 함수는 A1의 값을 반환합니다.
보다 JMeter 함수 사용 유용한 JMeter 함수를 사용하여 작업을 수행하는 방법에 대한 더 많은 예제를 보려면 시리즈를 게시하세요.