使用 Java 批量删除 Rally 测试用例
Bulk Deletion of Rally Test Cases using Java
我需要删除我在拉力赛中的几个测试用例。 Rally 网站说,解决此问题的唯一方法是与 Rally API 通信并编写一个小的批量删除脚本。
例如我需要从 TC100 - TC150 中删除。
谁能帮我解决这个问题?我正在使用 java。
谢谢。
根据 Rally Rest toolkit for Java documentation there is a Delete 方法。
这是一个代码示例,它通过标签名称查询测试用例,然后批量删除这些测试用例。您的查询条件会有所不同,但如果您选择通过标签识别测试用例,请注意 Tags.Name contains "tag1"
returns 测试用例可能应用了多个标签,而不仅仅是那些应用了单个 "tag1".
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.rallydev.rest.RallyRestApi;
import com.rallydev.rest.request.QueryRequest;
import com.rallydev.rest.response.QueryResponse;
import com.rallydev.rest.request.DeleteRequest;
import com.rallydev.rest.response.DeleteResponse;
import com.rallydev.rest.util.Fetch;
import com.rallydev.rest.util.QueryFilter;
import java.net.URI;
public class GetTestCasesByTagAndBulkDelete {
public static void main(String[] args) throws Exception {
String host = "https://rally1.rallydev.com";
String apiKey = "_abc123"; //use your api key
String applicationName = "Find TestCases by Tag and bulk delete";
String workspaceRef = "/workspace/12345";
RallyRestApi restApi = null;
try {
restApi = new RallyRestApi(new URI(host),apiKey);
restApi.setApplicationName(applicationName);
QueryRequest request = new QueryRequest("TestCase");
request.setWorkspace(workspaceRef);
request.setFetch(new Fetch(new String[] {"Name", "FormattedID", "Tags"}));
request.setLimit(1000);
request.setScopedDown(false);
request.setScopedUp(false);
request.setQueryFilter(new QueryFilter("Tags.Name", "contains", "\"tag1\""));
QueryResponse response = restApi.query(request);
System.out.println("Successful: " + response.wasSuccessful());
System.out.println("Results Size: " + response.getResults().size());
for (int i=0; i<response.getResults().size();i++){
JsonObject tcJsonObject = response.getResults().get(i).getAsJsonObject();
System.out.println("Name: " + tcJsonObject.get("Name") + " FormattedID: " + tcJsonObject.get("FormattedID"));
int numberOfTags = tcJsonObject.getAsJsonObject("Tags").get("Count").getAsInt();
QueryRequest tagRequest = new QueryRequest(tcJsonObject.getAsJsonObject("Tags"));
tagRequest.setFetch(new Fetch("Name","FormattedID"));
//load the collection
JsonArray tags = restApi.query(tagRequest).getResults();
for (int j=0;j<numberOfTags;j++){
System.out.println("Tag Name: " + tags.get(j).getAsJsonObject().get("Name"));
}
System.out.println("deleting " + tcJsonObject.get("FormattedID")) ;
DeleteRequest deleteRequest = new DeleteRequest(tcJsonObject.get("_ref").getAsString());
DeleteResponse deleteResponse = restApi.delete(deleteRequest);
}
} finally {
if (restApi != null) {
restApi.close();
}
}
}
}
我需要删除我在拉力赛中的几个测试用例。 Rally 网站说,解决此问题的唯一方法是与 Rally API 通信并编写一个小的批量删除脚本。
例如我需要从 TC100 - TC150 中删除。
谁能帮我解决这个问题?我正在使用 java。
谢谢。
根据 Rally Rest toolkit for Java documentation there is a Delete 方法。
这是一个代码示例,它通过标签名称查询测试用例,然后批量删除这些测试用例。您的查询条件会有所不同,但如果您选择通过标签识别测试用例,请注意 Tags.Name contains "tag1"
returns 测试用例可能应用了多个标签,而不仅仅是那些应用了单个 "tag1".
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.rallydev.rest.RallyRestApi;
import com.rallydev.rest.request.QueryRequest;
import com.rallydev.rest.response.QueryResponse;
import com.rallydev.rest.request.DeleteRequest;
import com.rallydev.rest.response.DeleteResponse;
import com.rallydev.rest.util.Fetch;
import com.rallydev.rest.util.QueryFilter;
import java.net.URI;
public class GetTestCasesByTagAndBulkDelete {
public static void main(String[] args) throws Exception {
String host = "https://rally1.rallydev.com";
String apiKey = "_abc123"; //use your api key
String applicationName = "Find TestCases by Tag and bulk delete";
String workspaceRef = "/workspace/12345";
RallyRestApi restApi = null;
try {
restApi = new RallyRestApi(new URI(host),apiKey);
restApi.setApplicationName(applicationName);
QueryRequest request = new QueryRequest("TestCase");
request.setWorkspace(workspaceRef);
request.setFetch(new Fetch(new String[] {"Name", "FormattedID", "Tags"}));
request.setLimit(1000);
request.setScopedDown(false);
request.setScopedUp(false);
request.setQueryFilter(new QueryFilter("Tags.Name", "contains", "\"tag1\""));
QueryResponse response = restApi.query(request);
System.out.println("Successful: " + response.wasSuccessful());
System.out.println("Results Size: " + response.getResults().size());
for (int i=0; i<response.getResults().size();i++){
JsonObject tcJsonObject = response.getResults().get(i).getAsJsonObject();
System.out.println("Name: " + tcJsonObject.get("Name") + " FormattedID: " + tcJsonObject.get("FormattedID"));
int numberOfTags = tcJsonObject.getAsJsonObject("Tags").get("Count").getAsInt();
QueryRequest tagRequest = new QueryRequest(tcJsonObject.getAsJsonObject("Tags"));
tagRequest.setFetch(new Fetch("Name","FormattedID"));
//load the collection
JsonArray tags = restApi.query(tagRequest).getResults();
for (int j=0;j<numberOfTags;j++){
System.out.println("Tag Name: " + tags.get(j).getAsJsonObject().get("Name"));
}
System.out.println("deleting " + tcJsonObject.get("FormattedID")) ;
DeleteRequest deleteRequest = new DeleteRequest(tcJsonObject.get("_ref").getAsString());
DeleteResponse deleteResponse = restApi.delete(deleteRequest);
}
} finally {
if (restApi != null) {
restApi.close();
}
}
}
}