groovy JsonSlurper断言随机数,随机字母数字和日期

时间:2017-07-20 21:28:04

标签: groovy ready-api jsonslurper

我是服务测试和Groovy的新手。以下是我的回复,

{
    encodedDiscountId=1275479, 
    encodedGuid=gOHSkGzQEee4-AJiXJP2jg,
    expirationDate=2017-08-17 17:00:00
}

我需要以下断言的帮助:

  1. 如果DiscountId值是7位长的随机数字,我需要断言。
  2. 我需要声明我在大写和小写字母中使用" - "
  3. 我需要声明expirationDate应该是系统日期之后的30天。
  4. 我尝试了脚本断言并继续收到此错误。

    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]
    

1 个答案:

答案 0 :(得分:1)

您的正则表达式仅适用于0-9中字符类中的单个字符。您需要声明整个字符串是数字,类似于/^[0-9]+$

^匹配行的开头,$匹配结尾,[0-9]+表示至少1个数字。由于encodedDiscountId看起来总是7位数,因此您可以将其作为^[0-9]{7}$包含在正则表达式中。

由于正则表达式中有$,如果您使用双引号,则需要将其作为\$"^[0-9]+\$")转义或使用斜杠字符串(/^[0-9]+$/)或单引号('^[0-9]+$')。