使用groovy脚本作为SoapUI中属性的值

时间:2013-02-04 19:49:08

标签: groovy soapui

我不熟悉soapUI和groovy所以也许有人可以帮助我。我尝试使用此属性定义来生成唯一ID

${=((0..<20).collect{['a'..'z','0'..'9'].flatten()[new Random().nextInt(['a'..'z','0'..'9'].flatten().size())]}.join())}

但是我得到一个错误,因为这个表达式包含嵌套的花括号,我找不到逃脱它们的方法。也许有人知道的方式?

提前致谢。

更新即可。我改变了脚本,现在它在SoapUI的脚本窗口中工作正常。

new GroovyShell().evaluate("(0..<20).collect {[\u0027a\u0027..\u0027z\u0027,\u00270\u0027..\u00279\u0027].flatten()[new Random().nextInt ([\u0027a\u0027..\u0027z\u0027,\u00270\u0027..\u00279\u0027].flatten().size())]}.join()"

由于xml验证失败,我用unicode代码替换了单引号。

但是当我尝试将它用作属性的值时,它会抛出并出错。

${=new GroovyShell().evaluate("(0..<20).collect {[\u0027a\u0027..\u0027z\u0027,\u00270\u0027..\u00279\u0027].flatten()[new Random().nextInt ([\u0027a\u0027..\u0027z\u0027,\u00270\u0027..\u00279\u0027].flatten().size())]}.join()"}

startup failed: Script183.groovy: 1: unexpected char: 0xFFFF @ line 1, column 136.    .flatten()[new Random().nextInt([\u0027a

我认为我的脚本中存在语法错误,但只有当我像使用属性一样使用它时才会抛出错误。有人知道如何解决这个问题吗?如果我可以使用它作为属性,我可以让很多人开心;)因为他们只需要使用属性的名称而不是调用任何脚本。

更新即可。我删除了(0 ..&lt; 20).collect部分,现在没问题,但它只生成一个符号。所以问题就在这里。

2 个答案:

答案 0 :(得分:2)

我使用以下内容生成相关ID。

${=java.util.UUID.randomUUID()}

答案 1 :(得分:1)

我已经解决了这个问题。由于某些原因,它不希望像它们那样处理嵌套的花括号。我用他们的unicode代码替换了它们。将此表达式存储为属性值的最终解决方案位于

之下
${=new GroovyShell().evaluate("(0..20).collect\u007B[\u0027a\u0027..\u0027z\u0027,\u00270\u0027..\u00279\u0027].flatten()[new Random().nextInt([\u0027a\u0027..\u0027z\u0027,\u00270\u0027..\u00279\u0027].flatten().size())]\u007D.join()")}