2017-06-29 24 views
1

對於UI自動化測試,我需要做REST Api調用來獲得響應。我傳遞會話ID成request.setheader頁眉,但我收到的反應是:Java:如何通過會話ID爲api測試休息API調用?

{"result":{"success":false,"httpCode":200,"errorCode":"INVALID_SESSION_ID","errorMessage":"Session ID not provided... Kindly Login !!"}} 

我試圖顯示會話ID,它似乎被罰款,我不明白的是,爲什麼它是未傳遞給API。下面是代碼:

HttpClient httpClient = HttpClientBuilder.create().build(); 
      HttpGet request = new HttpGet(getUrl); 

      SessionId SessionId = ((FirefoxDriver)driver).getSessionId(); 
      request.setHeader("Cookie", SessionId.toString()); 
      HttpResponse response = httpClient.execute(request); 

       InputStream ips = response.getEntity().getContent(); 
       BufferedReader buf = new BufferedReader(new InputStreamReader(ips,"UTF-8")); 
       if(response.getStatusLine().getStatusCode()!=HttpStatus.SC_OK) 
       { 
        throw new Exception(response.getStatusLine().getReasonPhrase()); 
       } 
       StringBuilder sb = new StringBuilder(); 
       String s; 
       while(true) 
       { 
        s = buf.readLine(); 
        if(s==null || s.length()==0) 
         break; 
        sb.append(s); 

       } 
       buf.close(); 
       ips.close(); 
       System.out.println("After parsing: "+sb.toString()); 

輸出: 解析後:強大的文本

{"result":{"success":false,"httpCode":200,"errorCode":"INVALID_SESSION_ID","errorMessage":"Session ID not provided... Kindly Login !!"}} 
+1

對於UI測試,您不得執行api調用。嘲笑他們。你不能依靠網絡進行UI測試。 – Spoke44

+0

對於我的UI測試中的少數測試用例,我需要來自api的響應。這是基本上用於功能測試的原因。 – codefemme

回答

0

這裏是解決方案: 改變,
request.setHeader( 「曲奇」,SessionId.toString() ); 至 request.setHeader(「sessionId」,SessionId.toString()); 這是API小組給出的API文檔中提到的。 然後,會話ID將作爲前一個API調用的輸出給出,該調用需要在隨後的api調用中傳遞。我不知道這一點,因爲我是API測試的新手。希望我的回答可以幫助有類似情況的人!