首页 > 解决方案 > 从包含 soapui 库的命令提示符编译 Groovy 脚本

问题描述

我正在尝试创建一个脚本库并编译一个 groovy 类,如https://stackoverflow.com/a/35498212/9997207中所述

Groovy 脚本

import groovy.json.*
import com.eviware.soapui.*

class ScriptLibrary  {

    def context
    def testRunner
    def log

def boolean setHeaderValues(userId, password){
try{
loginTestStep = testRunner.testCase.testSuite.testCases["SetHeaderParameters"].testSteps["SetHeaderParametersJsonRequest"]
def request = loginTestStep.getPropertyValue("Request").toString()
def jsonReq = new JsonSlurper().parseText(request);
def builder = new JsonBuilder(jsonReq)
builder.content.userId=userId
builder.content.password=password
def jsonReqAsString = JsonOutput.toJson(jsonReq)
loginTestStep.setPropertyValue("Request",jsonReqAsString)
def contextJsonRequest = new WsdlTestRunContext(loginTestStep);
loginTestStep.run(testRunner,contextJsonRequest)

def response = loginTestStep.getPropertyValue("Response").toString()
def jsonResponse = new JsonSlurper().parseText(response);
def accessTokenFromResponse = jsonResponse.accessToken.toString()
def userPermissionFromResponse = jsonResponse.userPermissionIds.toString()
def userIdFromResponse = jsonResponse.userId.toString()

testRunner.testCase.testSuite.project.setPropertyValue("HEADER_USER_ID", userIdFromResponse)
testRunner.testCase.testSuite.project.setPropertyValue("HEADER_USER_PERMISSION", userPermissionFromResponse)
testRunner.testCase.testSuite.project.setPropertyValue("HEADER_ACCESS_TOKEN", accessTokenFromResponse)

log.info "Header set with values "+userIdFromResponse+":::"+userPermissionFromResponse+":::"+accessTokenFromResponse
setHeader = true
}
return setHeader
}
catch (Exception ex) {
    log.info "Header Not Set  " +ex
    setHeader = false
    testRunner.testCase.testSuite.project.setPropertyValue("HEADER_USER_ID", "")
    testRunner.testCase.testSuite.project.setPropertyValue("HEADER_USER_PERMISSION", "")
    testRunner.testCase.testSuite.project.setPropertyValue("HEADER_ACCESS_TOKEN", "")
     return setHeader
    }
}
}

尝试从命令提示符编译 groovy 脚本时出现以下编译错误

C:\Path\apache-groovy-binary-2.5.1\groovy-2.5.1\bin\GroovyScripts>groovy ScriptLibrary.groovy
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
C:\Path\apache-groovy-binary-2.5.1\groovy-2.5.1\bin\GroovyScripts\ScriptLibrary.groovy: 20: unable to resolve class WsdlTestRunContext
 @ line 20, column 26.
   def contextJsonRequest = new WsdlTestRunContext(loginTestStep);
                            ^

1 error

标签: groovysoapui

解决方案


您必须soupui-{version}.jar在类路径中包含文件才能解决此依赖问题。您可以在SoapUI-{version}/bin文件夹中找到它。假设 SoapUI 5.4.0 位于/tmp/SoapUI-5.4.0/. 在这种情况下,我可以使用以下命令编译脚本:

groovyc -d classes -cp ".:/tmp/SoapUI-5.4.0/bin/soapui-5.4.0.jar" script.groovy

请记住,此命令是从所在的文件夹运行的script.groovy,编译的类可以在./classes/script.class


推荐阅读