从 JMeter 上的 CSV 文件设置 XPath 断言

Set an XPath assertion from a CSV file on JMeter

我正在使用 JMeter 对 Web 服务进行回归测试。我正在尝试使用 Xpath 断言和 CSV 文件来避免创建多个 XPath 断言。

这是我的 CSV 文件的概述 test.csv(它为每个字段定义了预期值):

field1,value1
field2,value2
field3,value3

这是我的 Xpath 断言:

//Envelope/Body/response/result/data/types/${field)}[text()='${value)}']

其中 fieldvalue 是我的 CSV 数据集配置中的变量名称。

当我 运行 我的测试有 1 次迭代时,它会用我的 CSV 的第一行检查响应。我必须对我的线程组进行至少 3 次迭代,以确保使用我的 CSV 的每一行。

我试过使用这种 Xpath 断言的 CSVRead 函数:

//Envelope/Body/response/result/donnee/types/${__CSVRead(test.csv,0)}[text()='${__CSVRead(test.csv,1)}']

但我不知道如何循环播放。不知道可不可以

我建议按如下方式构建您的项目:

  • HTTP 请求或 SOAP/XML-RPC 请求采样器(returns XML 数据)
  • 循环控制器(循环数与 CSV 文件中的行数相匹配

    • Beanshell Sampler(将下面的代码放到"Script"区域)

          return ctx.getPreviousResult().getResponseDataAsString();
      
      • CSV 数据集配置
      • XPath 断言

Beanshell Sampler 只会从父 HTTP 请求或 SOAP 请求中获取响应数据,而无需重新执行请求,因此您可以根据需要多次重复使用响应数据。

  • ctx - shorthand 到 JMeterContext 实例
  • ctx.getPreviousResult() - returns SampleResult class 实例保存有关先前(HTTP 或 SOAP)请求响应的信息.确保在 HTTP 请求和循环控制器之间没有任何其他采样器(调试、测试操作等),否则你会得到错误的响应数据
  • getResponseDataAsString() - 不言自明

有关 Apache JMeter 中 Beanshell 脚本的更多信息,请参阅 How to use BeanShell: JMeter's favorite built-in component 指南。

如果您有任何问题,请查看 XPathNameSpaceAssertionDemo 项目