java—使用groovy脚本将请求中的随机整数存储到属性

8yoxcaq7  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(425)

我想存储一个已在请求主体中调用的随机整数,并将其存储在testcase属性中,以便在下一个请求中作为主体参数传递。
例如:
请求1: id_num = randomNumeric(10) 属性: id_num = 1234567890 请求2: trfered_IDNum = ${#TestCase#id_num}

3j86kqsm

3j86kqsm1#

结构如下所示,

Project
  |---TestSuite
         |-------TestCase
                   |------RestRequestTestStep1
                   |------RestRequestTestStep2
                   |------GroovyScript

让我们从一些假设开始。
restrequestteststep1响应主体包含以下字段:

{"Resp1Field1Key":"Resp1Field1Value",
                      "Resp1Field2Key":"Resp1Field2Value"}

restrequestteststep2请求正文包含以下字段:

{"Resp2Field1Key":"Resp2Field1Value",
                       "Resp2Field2Key":"Resp2Field2Value"}

第一个响应的resp1field1value和resp1field2value将被替换为第二个请求的resp2field1value和resp2field2value。
restrequestteststep2主体应该如下所示,因为我们将替换testcase属性中的值,该属性将在第一个请求完成后在groovy脚本中设置。
{“resp2field1key”:“${#testcase#resp2field1value}”,“resp2field2key”:“${#testcase#resp2field2value}”}
代码..而不是脚本:groovy脚本可以放在同一个测试用例下,并且应该执行以下操作,

import groovy.json.JsonSlurper

//Substitute with appropriate testSuiteName,testCaseName,testStepName1 and testStepName1 as per the Project Structure you have.

def testSuite = testRunner.testCase.testSuite.project.getTestSuiteByName("testSuiteName")
        def testCase = testSuite.getTestCaseByName("testCaseName")
        def testStep1 = testCase.getTestStepByName("testStepName1")
        def testStep2 = testCase.getTestStepByName("testStepName2")

       // Call the first REST Request
       testStep1.run(testRunner, context)       

        def response = testStep1.testRequest.response.responseContent
        def jsonSlurper = new JsonSlurper().parseText(response)

       //Assign it to a testCase Property to grab for second Rest Request

         if (jsonSlurper.size() > 0) {
            testCase.setPropertyValue("Resp1Field1Value",Resp1Field1Value)
            testCase.setPropertyValue("Resp1Field2Value",Resp1Field2Value)
            );

       //Call the second Rest Request

       testStep2.run(testRunner, context)       

        def response = testStep2.testRequest.response.responseContent
        def jsonSlurper = new JsonSlurper().parseText(response)

     // Perform Validation/assertion as desired
qxgroojn

qxgroojn2#

在同一测试用例中的第二个请求之前,在groovy脚本中使用这两行代码

def id_num = (new Random().nextInt(100000000)).toString()
testRunner.testCase.setPropertyValue( "id_num", id_num  )
log.info id_num


现在,由于您已经在soap步骤的testcase属性中保存了值,您可以在同一个testcase中的下一个请求中使用下面的方法

${#TestCase#id_num}


这样,一旦运行,它将自动替换该值。要查看soapui中的值替换,可以查看raw选项卡
看看下面这个。。值被替换

相关问题