我正在使用Soapui的Groovy步骤。 以下代码运行良好但似乎很长且重复:
if(response.comp.type[3] == "value1")
log.info ("value1 is present")
else
log.info ("value1 is not present")
if(response.comp.bucket[3] == null)
log.info ("bucket = null")
else
log.info ("bucket is not null")
if(response.comp.cycle[3] == "new")
log.info ("settings cycle = new")
else
log.info ("settings cycle is null")
是否可以在一次测试中执行相同操作,而不是在每一行上重复IF和ELSE。 我尝试使用TRY CATCH,但我无法获得错误的堆栈跟踪。
任何人都可以帮助减少代码。 谢谢
答案 0 :(得分:10)
由于字段各不相同,您仍然需要进行每项检查,但更简洁的形式是:
log.info (response.comp.type[3] == "value1" ? "value1 is present" : "value1 is not present")
log.info (response.comp.bucket[3] == null ? "bucket = null" : "bucket is not null")
log.info (response.comp.cycle[3] == "new" ? "settings cycle = new" : "settings cycle is null")
通过更多努力,您可以减少重复,但可能会使代码更难以阅读。 E.g。
log.info "bucket ${response.comp.bucket[3] == null ? '=' : 'is not'} null"
正如您所看到的,至少在这种情况下,第二种形式更难以阅读。
答案 1 :(得分:3)
我不知道这是否符合您的偏好,但您可以使用switch
代替长if..else
语句,如:
def x = response.comp.type[3]
switch(x){
case "value1" : log.info("value1 is present")
...
default: log.info("value is not present")
}
其中x
是您要分配给它的值。并为response.comp.bucket[]
和response.comp.cycle[]
修改强>
我修改了代码,将x声明为response.comp.type [3]的持有者,并检查它是否具有“value1”。