在JMeter上的CSV文件中设置XPath断言

时间:2015-02-25 16:39:55

标签: csv xpath jmeter

我正在使用 JMeter 进行Webservice上的回归测试。我正在尝试使用 CSV 文件使用 Xpath 断言,以避免创建多个XPath断言。

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

field1,value1
field2,value2
field3,value3

这是我的Xpath断言:

  

//信封/车身/响应/结果/数据/类型/ $ {字段)} [文本()= '$ {值)}']

field& value是我的CSV数据集配置中的变量名称。

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

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

  

//信封/车身/响应/结果/ donnee /类型/ $ {__ CSVRead(test.csv,0)} [文本()= '$ {__ CSVRead(test.csv,1)}']

但我不知道如何循环它。我不知道是否可能。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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

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

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