https://github.com/vinsguru/jmeter-rest-data-drivern/tree/mastergit
在本文中,我想向您展现一种用于REST API测试的数据驱动方法。若是你是新来的JMeter / REST API测试,我想读这篇文章首先获得一些想法。github
咱们的目标是提出一个框架,用不一样的HTTP方法测试REST API。此测试将经过电子表格进行,电子表格将包含全部输入参数,API URL,HTTP方法,请求JSON,文本响应应用于断言等。数据库
经过使用一个HTTP Sampler,咱们但愿发送不一样类型的请求GET / POST / PUT / PATCH / DELETE。 甚至HTTP请求正文数据也将在运行时动态添加。json
我将使用此JSON-Server进行此测试。您能够在一分钟内快速设置并运行。若是有,您也可使用您的应用程序API。api
安装完成后,使用如下命令启动服务器。json-server --watch db.json
服务器
个人db.json看起来像这样。app
1
2
3
4
五
6
7
8
9
10
11
|
{
"books"
:[
],
"comments"
:[
],
"profile"
:{
"name"
:
"typicode"
}
}
|
让咱们假设,咱们但愿将这些场景做为REST API功能测试的一部分来执行。测试描述提供了关于测试用例的高级想法。框架
若是全部请求实际上都相同且只有数据不一样,以下所示,咱们可使用1个HTTP Sampler和一个CSV DataSet Config轻松地在JMeter中进行数据驱动测试。测试
但在咱们的例子中,咱们有1个GET请求,而后是5个POST请求,而后是1个GET请求......等等。咱们发送不一样类型的请求。所以,咱们最终可能会建立咱们的测试计划,如此处所示spa
若是咱们须要测试成千上万的场景,会发生什么!! 咱们怎样才能保持如此庞大的JMeter测试?
为了经过电子表格彻底推进测试,在仔细分析这些请求以后,让咱们将这些HTTP请求中可能不一样的任何数据移动到电子表格中,如此处所示。
1
2
3
4
|
{
"title"
:
"${title}"
,
"author"
:
"${author}"
}
|
1
2
3
4
五
|
{
"title"
:
"${title}"
,
"author"
:
"${author}"
,
"price"
:
"$10.00"
}
|
1
2
3
|
{
"title"
:
"${title}"
}
|
因为咱们已将全部变量移动到电子表格,如今经过在JMeter测试中只有一个HTTP Sampler并经过在运行时设置HTTP Sampler属性/属性,咱们能够运行整个测试。
如下语句更改当前的采样器HTTP方法。
def httpMethod = vars.get("http.method");
sampler.setMethod(httpMethod);
咱们使用如下语句来更改HTTP Body。咱们读取input.json文件,而后用相应的数据替换any变量
def dataToBePosted = new CompoundVariable(new File(vars.get("jmeter.test.home") + vars.get("input.json")).text).execute();
def arg= new HTTPArgument("", dataToBePosted, null, true);
arg.setAlwaysEncoded(false);
sampler.getArguments().addArgument(arg);
您能够检查JMeter测试计划,这里在GitHub上。
经过将全部变量移动到电子表格并使用1个HTTP采样器,咱们能够测试不一样类型的请求。在此测试计划中添加任何新测试都很是简单。如您所知,咱们必须在电子表格中再插入一行,并为新测试提供足够的信息。经过查看电子表格,您能够轻松了解咱们的报道。使用此方法对测试数据的任何更新也很容易,而不是更新JMeter中的每一个单独的HTTP请求。