Jmeter:为什么我的JSON断言由于一个问号而失败?

时间:2019-03-14 14:05:08

标签: json regex jmeter assertion

我正在测试一个菜单/餐厅聊天机器人,并且需要验证它是否收到了我键入的确切输入。我查询调试器以取回输入。

我的输入字符串是What is cocktail?。这是响应:

    "userInputs": {
    "originalInput": {
      "sentence": "What is cocktail?",
      "timestamp": 2088408809
      }
     },

所以绝对可以得到正确的输入。该错误似乎在我的JSON断言中。在这里,是从CSV文件(其中input =什么是鸡尾酒?)中获取数据。

enter image description here

然后我的断言失败,并显示消息Input : Value expected to match regexp '(?i)What is cocktail?', but it did not match: 'What is cocktail?'

除了正则表达式外,它们在我看来都一样。如果我删除问号,则测试通过。我在正则表达式中缺少明显的东西吗,我的字符串中不能有问号?

1 个答案:

答案 0 :(得分:0)

如果您不想使用特殊含义,则问号是must be escaped正则表达式中的字符的一部分

  

?问号是零或一的匹配量。

您可以使用JSR223 PreProcessor

替换值
vars.put("inputEscaped", vars.get("input").replace("?","\\?"));

它将创建一个您可以使用的新变量${inputEscaped}(也可以覆盖input