我们如何放心传递多个 header?

问题描述 投票:0回答:6

我是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"));
    }

}
http-headers rest-assured
6个回答
16
投票

添加多个标题的最简单方法是在

.header(headername,headervalue)
 之后多次重复 
.given()

given().
  header("Id", "abc").
  header("name","name").
  header("","")
  ...

您可以在其测试套件中找到使用 REST-Assured 框架传递标头的不同方法,网址为 github 链接

编辑:

要验证 Rest-Assured 中的响应状态:

expect().statusCode(200),log().ifError().given()...... 

或者从此 github 链接

选择一个如何测试响应标头的示例

11
投票

您还可以创建并添加多个标题的地图对象,如下所示

    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);

2
投票

这可能有帮助:

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();

2
投票

或者您可以使用 RestAssured 的 Headers(),它支持您同时添加多个标头来请求。

标题说明


0
投票

如下替换:

@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"));
    }

0
投票

这就是我与 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();
}
© www.soinside.com 2019 - 2024. All rights reserved.