Создайте динамический запрос от увеличения значения переменных в jmeter - PullRequest
0 голосов
/ 30 августа 2018
I have a response from one request as :

**{  
   "Packages":[  
      {  
         "CreatedBy":"Administrator",
         "CreatedDate":"\/Date(1535635263383)\/",
         "DeviceFamily":6,
         "LastVersion":{  
            "BuildVersion":"1.0",
            "Comment":"",
            "ExtraSize":0,
            "InstallPrompt":false,
            "OSVersion":"2.0-10.0",
            "Processor":"ALL",
            "Size":10465294,
            "UploadDate":"\/Date(1535635263520)\/",
            "UploadedBy":"Administrator",
            "Vendor":"",
            "Version":"1.0"
         },
         "Name":"10MB",
         "ReferenceId":"150e6517-f805-4e33-936f-d923657be79a",
         "TotalVersions":1
      },
      {  
         "CreatedBy":"Administrator",
         "CreatedDate":"\/Date(1535635276557)\/",
         "DeviceFamily":6,
         "LastVersion":{  
            "BuildVersion":"1.0",
            "Comment":"",
            "ExtraSize":0,
            "InstallPrompt":false,
            "OSVersion":"2.0-10.0",
            "Processor":"ALL",
            "Size":104884390,
            "UploadDate":"\/Date(1535635277457)\/",
            "UploadedBy":"Administrator",
            "Vendor":"",
            "Version":"1.0"
         },
         "Name":"100MB",
         "ReferenceId":"02e94794-2e0a-4c20-9d20-5612a9b2378f",
         "TotalVersions":1
      }
   ],
   "Total":2
}**

Приведенный выше json содержит значение двух ReferenceId, Name, Version и Size. Эти значения необходимо передать в последующий запрос и создать динамический запрос таким образом, чтобы запрос мог измениться, если значение для вышеуказанных переменных увеличивается до 4,6 или N.

I have to pass values in next request as :

**{  
   "HasDraftVersion":false,
   "IsApprovalPending":null,
   "IsInstalledSilently":true,
   "LastModified":"/Date(1535570626907)/",
   "LastModifiedBy":"Administrator",
   "DeviceConfigurations":[  
   ],
   "Packages":[  
      {  
         "ReferenceId":"b0f3b725-86f9-4bc3-a929-63bfb8e8727c",
         "Name":"10MB",
         "Version":"1.0",
         "PackageDependencies":"",
         "Size":10465294
      },
      {  
         "ReferenceId":"bb6b3176-0798-4cef-9659-4a119470a4dc",
         "Name":"100MB",
         "Version":"1.0",
         "PackageDependencies":"",
         "Size":104884390
      }
   ],
   "LdapTargets":null,
   "ReferenceId":null,
   "DeviceFamily":6,
   "DeviceFamilyQualification":0,
   "Name":"test",
   "Description":"",
   "Random":"2018-08-29T15:16:47",
   "IsPublicAPI":true
}**

** Как создать динамический запрос с увеличением значения в предыдущем json?

Я пытаюсь использовать экстрактор путей Json, но не могу создать динамический запрос.

Я также пытаюсь использовать средство извлечения регулярных выражений. **

1 Ответ

0 голосов
/ 30 августа 2018
  1. Добавить JSR223 PreProcessor как дочерний элемент 2-го запроса
  2. Поместите следующий код в область «Сценарий»:

    def previousResponse = new groovy.json.JsonSlurper().parse(ctx.getPreviousResult().getResponseData())
    
    @groovy.transform.Immutable
    class Package {
        String ReferenceId
        String Name
        String Version
        Integer Size
    }
    
    def packages = previousResponse.Packages.collect { Package -> new Package(Package.ReferenceId, Package.Name, Package.LastVersion.Version, Package.LastVersion.Size) }
    
    def builder = new groovy.json.JsonBuilder()
    
    builder(HasDraftVersion: false,
            IsApprovalPending: null,
            IsInstalledSilently: true,
            LastModified: "/Date(1535570626907)/",
            LastModifiedBy: "Administrator",
            DeviceConfigurations: [],
            Packages: packages.collect() {
                [
                        ReferenceId        : it.ReferenceId,
                        Name               : it.Name,
                        Version            : it.Version,
                        PackageDependencies: "",
                        Size               : it.Size
                ]
            },
            LdapTargets: null,
            ReferenceId: null,
            DeviceFamily: 6,
            DeviceFamilyQualification: 0,
            Name: "test",
            Description: "",
            Random: "2018-08-29T15:16:47",
            IsPublicAPI: true)
    
    sampler.getArguments().removeAllArguments()
    sampler.addNonEncodedArgument('',builder.toPrettyString(),'')
    sampler.setPostBodyRaw(true);        
    

Приведенный выше код автоматически извлекает требуемые значения из предыдущего ответа, динамически формирует запрос с использованием этих значений и добавляет его в тело сэмплера HTTP Request .

Дополнительная информация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...