1

A 不熟悉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..<20).collect 部分,现在可以了,但它只生成一个符号。所以问题就在这里。

4

2 回答 2

2

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

${=java.util.UUID.randomUUID()}
于 2013-02-06T12:03:53.810 回答
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()")}
于 2013-02-05T15:59:55.227 回答