【发布时间】:2017-12-02 20:52:03
【问题描述】:
对于 UI 自动化测试,我需要调用 REST Api 来获得响应。我通过 request.setheader 将会话 ID 传递到 HEADER,但收到的响应为:
{"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 !!"}}
【问题讨论】:
-
对于 UI 测试,你不能做 api 调用。嘲笑他们。您不能依赖网络进行 UI 测试。
-
对于我的 UI 测试中的少数测试用例,我需要来自 api 的响应。这就是原因,基本上是为了功能测试。
标签: java rest servlets selenium-webdriver web-api-testing