我是SoapUI的新手,遇到了一个我不明白的问题。 目标:我想在一个不同的测试步骤中将一个Groovy脚本的结果传递给另一个Groovy脚本。
步骤1:我有一个生成GUID的Groovy脚本:
// generate a new GUID
def guidVal = "${java.util.UUID.randomUUID()}"
步骤2:我有一个属性转移步骤,它接受上述脚本的结果并将其传递到HTTP请求步骤(正在运行)
步骤3:我有第二个运行curl命令的Groovy脚本,我需要包含相同的GUID。
def deviceGuid = testRunner.testCase.testSteps['Property Transfer'].getPropertyValue("result")
// run the following curl command to generate certs
def command = 'C:\\Program Files (x86)\\Git\\usr\\bin\\curl -v -H "Content-type: application/json" -X POST -d "{\"deviceId\": \"<NEED GUID HERE>\" }" http://localhost:49742/register > out.zip'.execute().text
第3步是问题的开始。如何从第一个脚本生成GUID并将其放入第二个Groovy脚本? 在运行时,上面返回
Wed Mar 16 13:46:37 EDT 2016:INFO:null
答案 0 :(得分:1)
这是你可以做的简单事情。
由于在同一测试用例中使用uuid
值,因此可以通过在第一步中添加以下命令将第一步中生成的值保存在测试用例级属性(例如UUID)中(在端):
context.testCase.setPropertyValue('UUID', guidVal)
现在第二步,即属性转移已经过时,因为使用上述步骤在测试用例级别属性中可以使用该值。
在下一个groovy步骤中,只需使用以下语句之一从测试用例属性中获取uuid
值。
def deviceGuid = context.testCase.getPropertyValue('UUID')
或def deviceGuid = context.expand('${#TestCase#UUID}')
关于命令中的设备id替换,这里是更改的命令,需要正确地转义字母。
def command = "C:\\Program Files (x86)\\Git\\usr\\bin\\curl -v -H \"Content-type: application/json\" -X POST -d \"{\"deviceId\": \"${deviceGuid}\" }\" http://localhost:49742/register > out.zip"
它可以像下面那样执行:
def process = command.execute()
如果您需要像上面提到的here那样捕获输出:
def outputStream = new StringBuffer()
process.waitForProcessOutput(outputStream, System.err)