微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rally Java:创建重复的测试用例

如何解决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 举报,一经查实,本站将立刻删除。