【问题标题】:Jmeter: Why are my JSON assertions failing because of a question mark?Jmeter:为什么我的 JSON 断言会因为问号而失败?
【发布时间】:2019-08-05 11:13:53
【问题描述】:

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

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

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

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

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

除了正则表达式之外,它们在我看来是一样的。如果我删除问号,则测试通过。我是否遗漏了一些明显的正则表达式,我的字符串中不能有问号?

【问题讨论】:

  • 好的,我发现你需要转义问号。但是当它包含在输入字符串中时我该怎么做呢?是添加“\”的唯一方法吗?我的数据集中的每一个问号?

标签: json regex jmeter assertion


【解决方案1】:

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

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

您可以使用 JSR223 PreProcessor 替换值

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

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

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多