groovy JsonSlurper随机数、随机字母数字和日期断言
我对服务测试和Groovy非常陌生。以下是我的回应groovy JsonSlurper随机数、随机字母数字和日期断言,groovy,ready-api,jsonslurper,Groovy,Ready Api,Jsonslurper,我对服务测试和Groovy非常陌生。以下是我的回应 { encodedDiscountId=1275479, encodedGuid=gOHSkGzQEee4-AJiXJP2jg, expirationDate=2017-08-17 17:00:00 } 我需要以下断言的帮助: 我需要断言折扣值是否都是7位长的随机数字 我需要断言我得到的是大写和小写字母数字,带“-” 我需要声明expirationDate应该是系统日期后的30天 我尝试了脚本断言,并不断得到这个错误
{
encodedDiscountId=1275479,
encodedGuid=gOHSkGzQEee4-AJiXJP2jg,
expirationDate=2017-08-17 17:00:00
}
我需要以下断言的帮助:
import groovy.json.JsonSlurper
def response = messageExchange.response.responseContent
def slurper = new JsonSlurper()
def json = slurper.parseText(response)
assert json.encodedDiscountId.size() == 7
assert json.encodedDiscountId.matches("[0-9]")
错误:
assert json.encodedDiscountId.matches("[0-9]") | | | | 1043947 false [encodedDiscountId:1043947, encodedGuid:l0wWcG2KEee4-AJiXJP2jg, expirationDate:2017-08-18 17:00:00]
正则表达式仅适用于字符类中0-9之间的单个字符。您需要断言整个字符串是数字,类似于
/^[0-9]+$
^
匹配行首,$
匹配行尾,[0-9]+
表示至少1个数字。由于它看起来像是encodeddisontid
始终是7位数字,因此您可以将其作为^[0-9]{7}$
包含在正则表达式中
由于正则表达式中有一个
$
,如果您使用双引号,则需要将其转义为\$
(“^[0-9]+\$”
)或使用斜杠字符串(/^[0-9]+$/
)或单引号('^[0-9]+$”
)。请将您的代码、输出和错误作为文本而不是图像发布。感谢@doelleri,断言json.encodeddisontid.matches(“^[0-9]{7}$”)
并不断获取此错误启动失败:Script27.groovy:9:美元符号后的非法字符串正文字符;解决方案:在第9行第38列转义字面美元符号“\$5”或将值表达式“${5}”括起来。assert json.encodeddisontid.matches(“^[0-9]{7}$”)^org.codehaus.groovy.syntax.SyntaxException:美元符号后的非法字符串体字符;解决方案:要么转义一个字面美元符号“\$5”,要么将值表达式“${5}”括在第9行第38列。
@peter您需要使用斜杠字符串或单引号,以防止Groovy认为$
是将变量插入GString,或者像错误所说的那样,用\$
转义它。谢谢@doelleri,单引号有效。我的第一个断言通过了耶!