我一直在阅读关于断言的大量讨论和帖子,包括:
我仍然不清楚验证特定节点值和XML响应的最有效方法。
我有一个HTTP请求采样器,我将JSON有效负载传递给MS SQL Server数据库,数据库执行计算并返回XML响应。
我唯一要验证的是<calculationSuccessfulIndicator>true</calculationSuccessfulIndicator>
它几乎是一个二元测试。它是真(通过)还是假(失败)。我有一个积极的测试数据和一个负面的测试数据,以确保它应该在它应该时失败并在它应该时通过。 (无需验证xsd或xml的任何其他部分)
对我来说,XPath Assertion似乎是实现这一目标的最准确方法。我将其设置为Apply to Main sample和sub-samples,并将XPath Assertion定义为/Response/PricingUnit/PrimaryAllocation/PricingTerm/calculationSuccessfulIndicator
但是如何指定&#34; true&#34;?
接下来,我尝试了一个响应断言,我将其设置为检查我唯一要验证的是<calculationSuccessfulIndicator>true</calculationSuccessfulIndicator>
。问题是,即使实际值为&#34; false&#34;,断言仍然通过。
我继续尝试在响应上执行RegEx,然后将其传递给Compare Assertion;但它总是通过,即使是在负面测试中。
任何人都对什么是最有效和最好的实施方式有任何想法?
答案 0 :(得分:0)
看起来您根本没有阅读引用的文章或者没有足够的注意力,第一个链接指出:
为了了解它应该如何工作,这里有一些关于example.com域的断言:
//title/text()='Example Domain'
- 将标记文字检查为“示例域” - 将通过
假设上面的语句,您需要在XPath断言中使用以下XPath表达式:
/Response/PricingUnit/PrimaryAllocation/PricingTerm/calculationSuccessfulIndicator/text()='true'
我不保证它会在我看到你的完整XML响应之前发挥作用,但它应该让你知道如何继续。
顺便说一句,可以使用“XPath Tester”模式在View Results Tree监听器中测试XPath表达式以防止实时响应。这是一个示例,证明上面的XPath查询工作正常:
有关深入了解JMeter测试问题的详细信息,请参阅How to debug your Apache JMeter script文章。