如何解决Rally Java:创建重复的测试用例
我已经构建了一个 Rally 依赖项,它会自动在测试计划中创建测试用例和文件夹。在创建测试用例时,它首先检查是否有任何同名的现有测试用例,否则它会创建新的测试用例。 这在总测试用例大小很小的情况下起作用,而测试用例大小增加时,我看到创建了重复的测试用例。因此,在检查现有场景然后创建新场景后,我让线程等待几秒钟(Thread.sleep(8000))。它以这种方式工作。
有没有更好的方法来处理和实现它来处理任何大小的测试用例。请指教。
String tcName = rallyMethods.getTestScenarios(parentFolder,scenarioName);
Thread.sleep(8000);
if (tcName == null) {
rallyMethods.createTestCase(parentFolder,scenarioName);
Thread.sleep(8000);
} else {
rallyMethods.updateTestCase(parentFolder,scenarioName);
Thread.sleep(8000);
}
public String getTestScenarios(String parentFolderName,String ScenarioName) throws Throwable {
String sName = null;
String pFolder;
QueryRequest testCaseRequest = new QueryRequest("TestCase");
testCaseRequest.setLimit(Integer.MAX_VALUE);
testCaseRequest.setPageSize(Integer.MAX_VALUE);
testCaseRequest.setFetch(new Fetch("FormattedID","Name","Workspace","Project","TestFolder"));
testCaseRequest.setQueryFilter(new QueryFilter("Name","=",ScenarioName));
testCaseRequest.setWorkspace(WORKSPACE_ID);
testCaseRequest.setProject(PROJECT_ID);
QueryResponse testCaseQueryResponse = query(testCaseRequest);
int testCaseCount = testCaseQueryResponse.getTotalResultCount();
// System.out.println("TestCaseCount:" + testCaseCount);
for (int i = 0; i < testCaseCount; i++) {
JsonObject scenarioObj = testCaseQueryResponse.getResults().get(i).getAsJsonObject();
String scenarioName = String.valueOf(scenarioObj.get("Name").getAsstring());
JsonElement pFolderObj = scenarioObj.get("TestFolder");
if (!(pFolderObj.isJsonNull())) {
JsonObject tFolderObj = scenarioObj.get("TestFolder").getAsJsonObject();
pFolder = String.valueOf(tFolderObj.get("Name").getAsstring());
if (parentFolderName.equalsIgnoreCase(pFolder)) {
sName = scenarioName;
logger.info("Test Scenarios identified in Rally: " + sName);
} else {
logger.info("Scenario," + ScenarioName + " not found,New Scenario will be created in Rally");
}
}
}
return sName;
}
public void createTestCase(String parentFolderName,String testCaseName) throws Throwable {
String tcName = null;
String userID = readUser();
// Query Child Folders:
QueryRequest testFolderRequest = new QueryRequest("TestFolder");
testFolderRequest.setFetch(new Fetch("Name","Project"));
testFolderRequest.setQueryFilter(new QueryFilter("Name",parentFolderName));
testFolderRequest.setWorkspace(WORKSPACE_ID);
testFolderRequest.setProject(PROJECT_ID);
QueryResponse testFolderQueryResponse = query(testFolderRequest);
int folderCount = testFolderQueryResponse.getTotalResultCount();
for (int i = 0; i < folderCount; i++) {
String testFolderRef = testFolderQueryResponse.getResults().get(i).getAsJsonObject().get("_ref").getAsstring();
JsonObject testFolderObj = testFolderQueryResponse.getResults().get(i).getAsJsonObject();
String pFolder = String.valueOf(testFolderObj.get("Name").getAsstring());
if (pFolder.equalsIgnoreCase(parentFolderName)) {
//System.out.println("Creating a test case...");
JsonObject newTC = new JsonObject();
newTC.addProperty("Name",testCaseName);
newTC.addProperty("Workspace",WORKSPACE_ID);
newTC.addProperty("Project",PROJECT_ID);
newTC.addProperty("Description","Selenium Automated TestCase");
newTC.addProperty("TestFolder",testFolderRef);
newTC.addProperty("Method","Automated");
newTC.addProperty("Type","Functional");
if (!(userID == null)) {
newTC.addProperty("Owner",userID);
}
CreateRequest createRequest = new CreateRequest("testcase",newTC);
CreateResponse createResponse = create(createRequest);
if (createResponse.wasSuccessful()) {
JsonObject tcObj = createResponse.getobject();
tcName = String.valueOf(tcObj.get("Name").getAsstring());
logger.info("Created test scenario name is: " + tcName);
} else {
String[] createErrors;
createErrors = createResponse.getErrors();
logger.info("Error while creating test scenario below parent folder!");
for (int j = 0; j < createErrors.length; j++) {
System.out.println(createErrors[j]);
logger.info(createErrors[j]);
}
}
}
}
}
解决方法
嗯...我对 Java REST 工具包不太熟悉,但我想不出工作区中较大的测试用例集会导致查询失败的原因。
您是否尝试检查 testCaseQueryResponse.wasSuccessful()
?如果它返回false,你能看到错误是什么吗? testCaseQueryResponse.getErrors()
我的第一个想法是您应该为 limit 和 pageSize 参数提供一个合理的值,而不是传递 Integer.MAX_VALUE
。其次,与其检查返回的测试用例是否在指定的父文件夹中,不如包括一个查询过滤器来过滤 TestFolder.Name = parentFolderName
上的测试用例结果。那么您应该只期望返回 1 或 0 个结果(假设您期望测试文件夹中的所有测试用例都具有唯一名称)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。