【问题标题】:Jmeter response message assertion with special characters带有特殊字符的 Jmeter 响应消息断言
【发布时间】:2017-05-08 14:02:24
【问题描述】:

我正在尝试对包含特殊字符的响应执行响应消息断言。

我看过这个问题:

Adding / at the start and end of the asserted string in Response Assertion in JMeter

但是当它包含特殊字符时,我仍然无法让它与断言匹配。我已经尝试过文本响应/包含、子字符串和响应消息/包含、子字符串,但它们都不匹配。

我要测试的模式是:

“v1.Accounts.Accounts.UpdateAccount 由于验证错误而失败:[MobileNumber]字段MobileNumber必须是字符串或数组类型,最大长度为'20'。”

【问题讨论】:

  • 你能发布你的断言模式吗?

标签: jmeter assertions


【解决方案1】:

根据How to Use JMeter Assertions in Three Easy Steps文章:

模式可以是:

  • “等于”或“子字符串”子句的“字符串”
  • “包含”或“匹配”子句的“Perl5 风格”正则表达式

如果是 Substring,它应该非常简单:只需将整个“模式”按原样放入“要测试的模式”字段中,如果响应包含该模式 - 断言将通过。

包含的情况下,JMeter 在后台使用Perl5Matcher.contains() method,因此将“模式”视为正则表达式。因此,您需要使用反斜杠转义特殊字符,例如:

v1.Accounts.Accounts.UpdateAccount failed due to validation errors:\[MobileNumber\] The field MobileNumber must be a string or array type with a maximum length of '20'.

以防万一,当涉及到Perl-Compatible Regular Expressions 时,您需要转义以下字符:

  • .^$*+?()[{\|字符类之外的字符
  • ^-]\ 字符类中的字符

另外请记住,正则表达式非常脆弱,因此任何额外的空格、换行符、制表符等都会破坏它们,因此如果上述建议无济于事,请更新您的问题,至少提供部分(更好的完整)响应并指定你需要检查哪一部分,可能是XPath Assertion更好的情况

【讨论】:

  • 感谢您的帮助,这是导致问题的响应中的新行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多