我是rest-assured和Java的新手,我正在尝试做一个非常基本的测试来检查API的响应是否为200 ok。 您能告诉我在下面的脚本中需要更改什么才能传递多个标头 Id、Key 和 ConId 吗?
import org.junit.Test;
import com.jayway.restassured.*;
import com.jayway.restassured.http.ContentType;
import static org.hamcrest.Matchers.*;
import static com.jayway.restassured.RestAssured.*;
public class APIresponse
{
public static void main(String[] args)
{
APIresponse apiresponse = new APIresponse();
apiresponse.response();
}
@Test
public void response ()
{
baseURI="http://testme/api/";
given().
header("Id", "abc").
param("Key", "NuDVhdsfYmNkDLOZQ").
param("ConId", "xyz").
when().
get("/uk?Id=DT44FR100731").
then().
contentType(ContentType.JSON).
body("response.code", equalTo("200"));
}
}
添加多个标题的最简单方法是在
.header(headername,headervalue)
之后多次重复
.given()
given().
header("Id", "abc").
header("name","name").
header("","")
...
您可以在其测试套件中找到使用 REST-Assured 框架传递标头的不同方法,网址为 github 链接。
编辑:
要验证 Rest-Assured 中的响应状态:
expect().statusCode(200),log().ifError().given()......
或者从此 github 链接
选择一个如何测试响应标头的示例您还可以创建并添加多个标题的地图对象,如下所示
Header h1= new Header("Accept", "*/*");
Header h2 = new Header("Accept-Language", "en-US");
Header h3 = new Header("User-Agent", "Mozilla/5.0");
List<Header> list = new ArrayList<Header>();
list.add(h1);
list.add(h2);
list.add(h3);
Headers header = new Headers(list);
request.headers(header);
这可能有帮助:
Map<String,Object> headerMap = new HashMap<String,Object>();
headerMap.put("first_name", "John");
headerMap.put("last_name", "Watson");
Response response = given()
.baseUri("http://localhost")
.basePath("user/details")
.headers(headerMap)
.get();
或者您可以使用 RestAssured 的 Headers(),它支持您同时添加多个标头来请求。
如下替换:
@Test
public void response ()
{
baseURI="http://testme/api";
given()
.header("Id", "abc")
.param("Key", "NuDVhdsfYmNkDLOZQ")
.param("ConId", "xyz")
when()
.get("/uk?Id=DT44FR100731")
then()
.contentType(ContentType.JSON)
.and()
.body("response.code", equalTo("200"));
}
这就是我与 RequestSpecification 一起使用的方式,并添加了两个标头。
@Test
public void PostRequest() {
String appKey = "777";// userID is unique
RequestSpecification myreq = RestAssured.given();
myreq.header("Content-Type", "application/json");
myreq.header("Authorization", "Bearer 777");
// Create Json Object to store attributes
JSONObject myjson = new JSONObject();
myjson.put("app_key", appKey);
myjson.put("status", "critical")
// Attach those attributes to Body after convert them in to JsonString
myreq.body(myjson.toString());
// Post the request with URL
Response MyRes = myreq.post("https://api.bigpanda.io/data/v2/alerts");
int ActualStatuscode = MyRes.getStatusCode();
}