接口测试的时候,经常会遇到上一个接口的返回参数作为下一个接口的入参这种情况,本片介绍如何使用java代码处理这种情况
1.maven引入gson包,我第一次用的是2.8.6版本,new JsonParser().parse(s)总是报错,于是换成了2.8.2版本
com.google.code.gson
gson
2.8.2
2.使用testNG进行依赖接口测试
package com.work.api.inter;
import java.io.IOException;
import net.sf.json.JSONObject;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.testng.annotations.Test;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import common.Base;
public class NewTest {
String commodityId = null;
@Test
public void users_test() throws ClientProtocolException, IOException {
//调用get方法
Base.HttpGet("http地址");
}
@Test
public void commodityinfo_test() throws ParseException, IOException{
//创建json对象,因为请求参数是json格式的,所以这么创建,
//我这里因为单位把接口做成了微服务,请求中嵌套了一层json,所以创建了2个
JSONObject parameter = new JSONObject();
JSONObject parameter2 = new JSONObject();
//加参数
parameter2.put("CommodityID", "106382");
parameter.put("PackageData", parameter2);
parameter.put("TransactionID", "111111111111111111111");
parameter.put("RequestDate", "11111111111111");
//调用post方法
String s= Base.HttpPost("http地址", parameter.toString());
//将返回强制转化成JsonObject对象
JsonObject jsobject1 = (JsonObject)new JsonParser().parse(s);
//因为返回里面嵌套了一层,取两次
JsonObject jsobject2 = (JsonObject)new JsonParser().parse(jsobject1.get("PackageData").toString());
commodityId=jsobject2.get("CommodityId").toString();
}
//(dependsOnMethods={"commodityinfo_test"})这个是改接口依赖于commodityinfo_test接口的意思
@Test(dependsOnMethods={"commodityinfo_test"})
public void commoditymerchant_test() throws ParseException, IOException{
JSONObject parameter = new JSONObject();
JSONObject parameter2 = new JSONObject();
//加参数,把commodityinfo_test()返回值当成入参
parameter2.put("CommodityID", commodityId);
parameter.put("PackageData", parameter2);
parameter.put("TransactionID", "111111111111111111111");
parameter.put("RequestDate", "11111111111111");
//调用post方法
Base.HttpPost("http地址", parameter.toString());
}
}
PS:调用的HttpPost和HttpGet方法在上一篇博客有写,