[JMeter를]는 응답하여 리턴 값을 추출하고, 포스트 프로세서 --BeanShell 파일에 저장하여 JMeter

수요가있다, 우리는 특정 계정 정보에 쿼리의 결과를 바탕으로 생성 한 후 계정 데이터의 수십만를 작성하고, 압력 시험 환경이 필요합니다.

내가 직접 파이썬 API를 호출, 데이터베이스 쿼리의 관행을 따르십시오;

그러나 최근에는 모든 데이터베이스 개발자에 대한 액세스가 나는 예외가 아니야, 제한된다. 당신은 데이터베이스에 액세스 할 수 있지만 쿼리 API가 없다, 잘 얻는다.

 

그럼, 해결책을 생각 약간, 가능한 테스트합니다. 다음과 같이 요약 기록 :

데이터가 JMeter를 함께 포스트 API를 생성하기 것은 다음을 달성하고 반환 값을 추출하고 로컬 파일로 저장.

그런데, 사실, 파이썬, 아무 문제, 사실, 할 것이다, 선택에 구현.

여기 달성하기 위해 JMeter를 함께 파이썬을 사용하기 전에 좀 더 만들었지 만, 또한 당신에게 간단한 요약 기록을 제공 할 수 있습니다. 으로는 다음과 같습니다 :

 

다음 단계 :

A. 새로운 TestPlan

 

 

. 다음과 같은 두 가지 구성 요소를 추가 :

1.TestPlan

 

 

2. 증가 설정 스레드 그룹

 

 

HTTP HTTP 헤더 관리자 증가합니다

 

 

 配置 : 콘텐츠 형식 : 응용 프로그램 / JSON

 

HTTP 요청을 증가하십시오

 

 

특정 매개 변수 http://haochuangtest.com/api/rest/internal/v1/en/XXXenterprise/$ {} / cloudXXXXX을 POST

POST data:
{
"id": "",
"XXXXXNumber": "",
"displayName": "HAO-TEST",
"password": "",
"XXXXXPassword": "",
"autoXXX": 2,
"XXXModel": false,
"smartXXXX": 6,
"expireTime": -1,
"adminUserId": 0,
"adminDisplayName": "null",
"permanent": "true",
"XXXXXNumberType": 4,
"XXXXXId": "null",
"userXXXXXXXDisplayName": "null",
"configs": {
"conXXXX": "2"
}
}

 

 

5.增加 Regular Expression Extractor

 

 

        <hashTree>
          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
            <stringProp name="RegexExtractor.refname">meetingNumber</stringProp>
            <stringProp name="RegexExtractor.regex">&quot;meetingNumber&quot;:&quot;(.+?)&quot;,</stringProp>
            <stringProp name="RegexExtractor.template">$1$</stringProp>
            <stringProp name="RegexExtractor.default"></stringProp>
            <stringProp name="RegexExtractor.match_number">1</stringProp>
          </RegexExtractor>
          <hashTree/>

 

6.增加 BeanShell PostProcessor

 

 

FileWriter fstream = new FileWriter("D:\\WORK_2020\\20200224_HAOCloud\\meetingId.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get("meetingNumber")+ "\n");
out.close();
fstream.close();

 

 

7.增加 View Result Tree 察看结果树

 

 

 

3.调试配置并运行;

运行过程,查看结果数的返回结果就行,此处不做截图;

 

4.检查结果:

可见文件已经成功生成 :

   

 

 

 

 

 

注意点:

1.对于返回结果的正则部分要注意,差一个双引号或者.都可能出错,导致获取的结果为null;

2.对于两个引用的组件要注意,不要选错;

3.其中主要的就是这个 BeanShell后置处理器 ,要注意使用;

 


 

 

部分参考:https://www.cnblogs.com/yrxns/p/10912816.html ,但是该文章有点问题错误,看的时候要注意辨别;

当做性能压测时,可能会需要把响应数据的一些字段统计出来。这里简单介绍一下。

1、首先把接口调通,确定需要统计的字段,这里以统计ccmpSeq字段来做例子。

 

2、添加正则表达式提取器,用来提取响应结果中的ccmpSeq

 

 

正则表达式用""包起来,如HTTP请求完成后的响应数据

{
"ccmpSeq":"CBS_queryBalance20171023131825491588",
"respTime":"20180820105000",
"respCode":"0",
"respDesc":"操作成功",
"data":{
"totalAmount":19999991000,
"accountID":"acct1470001090166"
}
}

我们只需要统计ccmpSeq,所以正则表达式为  "ccmpSeq":"(.+?)"

() 表示括起来的部分就是要提取的。

. 表示匹配任何字符串。
+ 表示一次或多次。
?表示不要太贪婪,在找到第一个匹配项后停止。
(3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$,$3$等等,表示解析到的第几个值给seq。如:$1$表示解析到的第1个值,我们这里只有一个正则表达式,所以是$1$
(4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填1
(5)缺省值:如果参数没有取得到值,那默认给一个值让它取,通常情况下为空
 
3、在本地新建一个123.csv文件,然后添加一个BeanShell PreProcessor,用于提取结果并将之保存到123.csv文件。

 

4、添加线程数为10,运行后,打开123.csv,查看结果。 

추천

출처www.cnblogs.com/haochuang/p/12357215.html