groovy - 从包含 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
解决方案
您必须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
推荐阅读
- authentication - 在带有 ASP.NET Core Swashbuckle 的 Swagger UI 上使用 [Authorize] 属性
- php - 生成具有多次执行的自动递增字符串
- python-3.x - 使用 python 从 XSD 文件创建特定的 XML 文件
- sockets - Elixir 中的 gen_udp 无法连接到 UDP 套接字
- javascript - 滚动动画的触控支持
- mercurial - 如何在我的最后一次提交中取消提交
- javascript - 如何将 get .pipe takeUntil 和订阅 Angular 中的一个函数与 RxJX 结合起来?
- grails - 在 grailsCentral (http://repo.grails.org/grails/plugins) 中找不到工件 org.grails.plugins:audit-logging:jar:1.1.3
- asynchronous - Ionic 4 存储移除
- r - 在使用非导出函数时将 RMD 文件合并到 R 包中