SoapUI如何通过Groovy脚本复制已计算的属性值到其他属性
解决方案
你之前Property Transfer只能复制原始表达式的核心原因是:你定义的myDateTime属性存储的原始值就是Groovy表达式字符串,只有在被context.expand()方法处理、或是嵌入到请求参数中被执行时,才会计算出时间戳结果,直接转移属性只会复制原始字符串。
下面是两种可行的实现方案:
方案1:使用Test Suite启动脚本(推荐)
直接在测试套件启动时一次性生成固定时间戳,无需额外的步骤或属性转移操作:
- 打开你的Test Suite配置页,切换到「Setup Script」标签
- 写入以下Groovy代码:
def now = new Date() def formattedTime = now.format("yyyy-MM-dd_HH-mm") // 将生成的时间戳写入Test Suite级属性staticDateTime testSuite.setPropertyValue("staticDateTime", formattedTime)
- 后续所有测试步骤中直接引用
${#TestSuite#staticDateTime}即可,全测试周期都会复用同一个时间戳值。
方案2:使用Groovy步骤计算后赋值
如果你需要保留原有的myDateTime属性定义,通过步骤触发赋值:
- 在测试套件的最开头添加一个Groovy Script步骤
- 写入以下代码:
// 计算myDateTime表达式的实际值 def calculatedTime = context.expand('${#TestSuite#myDateTime}') // 将结果存入staticDateTime属性 testSuite.setPropertyValue("staticDateTime", calculatedTime)
- 运行该步骤后,后续所有请求引用
${#TestSuite#staticDateTime}即可拿到固定的时间戳。
内容的提问来源于stack exchange,提问作者Grador
相关产品推荐
相关产品推荐

