1.首先创建一个Test Plan;
2.可以使用User Defined Variables设置一些全局变量;
3.与数据库的链接配置,JDBC Sqlserver Configuration;
4.可以配置Http request的公共Header;
5.有多只接口,如果部署服务器,端口等相同,可以设置公共的HTTP Request Defaults;
6.CSV Data Set Config设置参数;
7.创建线程组
8.可以使用JDBC Request对数据库做初始化;
9.重新创建线程组,再对接口做请求 - HTTP Request
a. 如果有中文,encoding设置为utf-8
b. request body中使用变量,如果是整型
n
a
m
e
,
如
果
是
字
符
串
类
型
"
{name}, 如果是字符串类型 "
name,如果是字符串类型"{name}"
10.接口请求成功后,使用JDBC PostProcessor后置处理器,获取数据库中需要校验的数据
11.使用JSR223 POSTProcessor获取response
以下仅是参考
package script.postprocessor
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy
import org.apache.jmeter.threads.JMeterContext
import org.json.*;
/*将response JSon转换为JSONObject对象*/
JSONObject response_obj = new JSONObject(prev.getResponseDataAsString())
/*将response_obj对象存放在hscode_response*/
props.put("hscode_response",response_obj)
12.使用JSR223 Assertion断言
以下仅是参考
package script.assertions
import org.json.*;
import org.json.JSONObject;
import com.newegg.sh.ec.tools.*;
/*获取hscode_response对象*/
JSONObject hscode_res = props.get("hscode_response");
/*比較返回的取值*/
String shippingcountry = hscode_res.get("ShippingCountry")
int companycode = hscode_res.get("CompanyCode").toInteger()
int sonumber = hscode_res.get("SoNumber").toInteger()
int dropshipid = hscode_res.get("DropShipId").toInteger()
failureMessage = ''
if (shippingcountry != "${ShippingCountry}") {
failureMessage += "ShippingCountry Failed;"
}
if (companycode != "${CompanyCode}" as int) {
failureMessage += "CompanyCode Failed;"
}
if (sonumber != "${SoNumber}" as int) {
failureMessage += "SoNumber Failed;"
}
if (dropshipid != "${DropShipId}" as int) {
failureMessage += "DropShipId Failed;"
}
JSONArray itemlist = hscode_res.get("ItemList")
for(item in itemlist) {
if (item.get("ItemNumber")!="${ItemNumber}") {
failureMessage += "ItemNumber Failed;"
}
if (item.get("Description") != "${Description}") {
failureMessage += "Description Failed;"
}
if ("${ItemNumber}" != "11-111-115") {
if (item.get("HSCode") != "${HSCode}") {
failureMessage += "HSCode Failed;"
}
}
else if (item.has("HSCode")) {
out.println(item.has("HSCode"))
failureMessage += "HSCode Failed;"
}
}
/*获取database的数据转为对象*/
def hscode_db = vars.getObject("hscode_db_single")
for (it in hscode_db) {
String hscode_value = it.get("HSCode")
String item_value = it.get("ItemNumber")
if (!(item_value == "${ItemNumber}" && hscode_value == "${HSCode}")) {
failureMessage += "Failed! DB itemnumber:"+ item_value + ",DB HSCode:"+hscode_value +";"
}
}
/*raise failure message*/
if (failureMessage != '') {
Failure = true;
AssertionResult.setFailureMessage(failureMessage);
}
13.可以使用Jmeter的JSON Assertion
14.Response Assertion