有没有办法在运行时将测试标记为Browserstack应用程序自动失败的测试?

时间:2018-07-30 09:38:22

标签: c# visual-studio nunit appium browserstack

我目前已设置应用测试以使用Browserstack。

我已经在Visual Studio 2017中使用NUnit Framework编写了测试。这些测试成功运行,并且按预期通过或失败,并且在Visual Studio的测试运行器中将其标记为此类。

我唯一的问题是,无论这些测试是通过还是失败,Browserstack都会在查看Browserstack应用程序自动仪表板时简单地将它们列出为已完成。

是否有一种方法可以在Visual Studio中完成测试后立即将这些测试标记为通过或失败,而将这些测试标记为通过或失败的唯一其他方法是在测试运行完成后使用Browserstacks Rest API

2 个答案:

答案 0 :(得分:1)

您可以使用以下REST API调用将测试标记为通过/失败。您甚至可以设置失败状态的原因

curl -u "<username>:<key>" -X PUT -H "Content-Type: application/json" -d "{\"status\":\"<new-status>\", \"reason\":\"<reason text>\"}" https://api-cloud.browserstack.com/app-automate/sessions/<session-id>.json

例如,如果您尝试标记测试会话ID为ABC123的测试失败,则cURL如下所示:

curl -u "your_Username:your_Key" -X PUT -H "Content-Type: application/json" -d "{\"status\":\"failed\", \"reason\":\"Marking test failed via rest api\"}" https://api-cloud.browserstack.com/app-automate/sessions/ABC123.json

如果希望在运行时执行此操作,则可以在运行时使用下面提到的代码段(在Java中)调用上述API。如果您使用的是其他语言,请将上面的API调用移植到您选择的任何语言:

import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.apache.http.NameValuePair;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.client.entity.UrlEncodedFormEntity;

public static void mark() throws URISyntaxException, UnsupportedEncodingException, IOException {
  URI uri = new URI("https://your_username:your_key@api.browserstack.com/app-automate/sessions/<session-id>.json");
  HttpPut putRequest = new HttpPut(uri);

  ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
  nameValuePairs.add((new BasicNameValuePair("status", "failed")));
  nameValuePairs.add((new BasicNameValuePair("reason", "failure_reason")));
  putRequest.setEntity(new UrlEncodedFormEntity(nameValuePairs));

  HttpClientBuilder.create().build().execute(putRequest);
}

参考:trip plugin

可以在运行时使用以下方法获取

会话ID:

((RemoteWebDriver)driver).getSessionId().toString();

答案 1 :(得分:0)

以防万一其他人遇到相同的问题,下面是我用来在C#运行时将测试标记为失败的代码:

BiFunction