从 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)}']
其中 field
和 value
是我的 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 项目
我正在使用 JMeter 对 Web 服务进行回归测试。我正在尝试使用 Xpath 断言和 CSV 文件来避免创建多个 XPath 断言。
这是我的 CSV 文件的概述 test.csv(它为每个字段定义了预期值):
field1,value1
field2,value2
field3,value3
这是我的 Xpath 断言:
//Envelope/Body/response/result/data/types/${field)}[text()='${value)}']
其中 field
和 value
是我的 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 项目