我不熟悉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部分,现在没问题,但它只生成一个符号。所以问题就在这里。
答案 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()")}