2017-09-13 13 views
0

我正在做黃瓜bdd測試,我有一個類[MyClient]包裝restassured方法,我有多個類,調用[MyClient]RestAssured:如何在發送請求後獲取RequestSpecification字段或參數?

我可以做像放,發佈等方法就好了,但我想知道是否有一種方法讓我得到請求後發送的實際請求字段(標題,正文...)。

我也沒有任何問題得到和解析響應,但我無法得到請求發送。

考慮下面,我可以調用sendPostRequest()將在RequestSpecification實例存儲到一個名爲request場,我可以通過調用getter隨時隨地獲取它。但是,我不能從RequestSpecification對象中獲取單個字段。從debugger,我可以看到這些字段很好,所以我認爲必須有一些乾淨的方式才能得到它。

我已經試過log()但它似乎並沒有給我我需要的東西。 任何幫助表示讚賞!

調用類:

public class MyInterfaceSteps() { 
private myClient = new MyClient(); 

public sendPostRequest(){ 
    myClient.post(someHeaders, someBody, someUrl); 
} 
} 

客戶端類:

public class MyClient() { 
private RequestSpecification request; 
private Response response; 

public getRequest() { 
    return request; 
} 

public getResponse() { 
    return response; 
} 

public Response post(Map<String, String> headers, String body, String url) { 
    request = given().headers(headers).contentType(ContentType.JSON).body(body); 
    response = request.post(url); 
} 
} 

回答

2

您創建一個過濾器(https://github.com/rest-assured/rest-assured/wiki/Usage#filters),它允許您訪問FilterableRequestSpecification(http://static.javadoc.io/io.rest-assured/rest-assured/3.0.3/io/restassured/specification/FilterableRequestSpecification.html),從中你可以得到(並修改)例如標題和正文等過濾器可以將這些值存儲到您選擇的數據結構。

+0

我希望能夠將我的請求的完整URI添加到testNG自定義報告中。爲此,我必須做'FilterableRequestSpecification httpRequest =(FilterableRequestSpecification)RestAssured.given();',然後將我的查詢參數應用於'queryParam(...)',然後執行'.get(mypath)'。通過將請求轉換爲「FilterableRequestSpecification」,而不需要過濾器,我終於可以通過'httpRequest.getURI()'訪問URI。爲什麼'getURI()'不是RequestSpecification的默認方法?將它轉換爲FilterableRequestSpecification是否會造成麻煩? – agatheblues

相關問題