4

我在执行期间创建了一个测试运行,我想在它们开始执行的同时添加测试用例。如果测试用例不存在,则已创建测试用例。并且应该将此测试用例与其他测试用例一起添加到现有的测试运行中。

我曾尝试使用setCaseIdsover the run 并在更新运行后使用,但这会覆盖现有运行。我认为错误是因为我正在使用setCaseIds,但我不知道正确的方法。

Case mycase = new Case().setTitle("TEST TITLE").setSuiteId(suite.getId()).setSectionId(section.getId());
mycase = testRail.cases().add(mycase.getSectionId(), mycase, customCaseFields).execute();
final List<Integer> caseToAdd = new ArrayList();
caseToAdd.add(mycase.getId());
run.setCaseIds(caseToAdd);
run = testRail.runs().update(run).execute();
//The first test start the execution
.
.
.
// The first test case finish
// Now I create a new testcase to add
Case mySecondCase = new Case().setTitle("TEST TITLE").setSuiteId(suite.getId()).setSectionId(section.getId());
mycase = testRail.cases().add(mySecondCase.getSectionId(), mySecondCase, customCaseFields).execute();
// I repeat the prevous steps to add a new test case
final List<Integer> newCaseToAdd = new ArrayList();
newCaseToAdd.add(mySecondCase.getId());
    run.setCaseIds(newCaseToAdd);
    run = testRail.runs().update(run).execute();

有谁知道该怎么做?先感谢您。

4

2 回答 2

1

这是我能找到的:

  1. TestRail 不支持添加/追加操作。它只支持设置/覆盖操作。这就是您在同一运行中调用 setCaseIds 两次时会发生的情况,它只保存最后一个 id(这就是您通常可以从set方法中得到的)。
  2. 建议的解决方案是:

Run activeRun = testRail.runs().get(1234).execute(); List<Integer> testCaseIds = activeRun.getCaseIds() == null ? new ArrayList<>() : new ArrayList<>(activeRun.getCaseIds()); testCaseIds.add(333); testRail.runs.update(activeRun.setCaseIds(testCaseIds)).execute();

因此,您可以从 run 中获取现有的 id,而不是仅仅设置一个新的 id,向它添加 id 并更新 run。

来源: https ://github.com/codepine/testrail-api-java-client/issues/24

于 2018-10-16T07:42:09.253 回答
1

我解决了计划和条目结构的问题。我将所有测试用例保存在一个列表中,这个列表作为函数中的参数传递entry.setCaseIds

// First Test Case
Case mycase = new Case().setTitle("TEST TITLE").setSuiteId(suite.getId()).setSectionId(section.getId());
mycase = testRail.cases().add(mycase.getSectionId(), mycase, customCaseFields).execute();
// List for Test Cases
List<Integer> caseList = new ArrayList<>();
caseList.add(mycase.getId());
// Create new Entry and add the test cases
Entry entry = new Entry().setIncludeAll(false).setSuiteId(suite.getId()).setCaseIds(caseList);
entry = testRail.plans().addEntry(testPlan.getId(),entry).execute();
// Create the second test case
Case mycase2 = new Case().setTitle("TEST TITLE 2").setSuiteId(suite.getId()).setSectionId(section.getId());
mycase2 = testRail.cases().add(mycase.getSectionId(), mycase, customCaseFields).execute();
// Add the second test case to the list
caseList.add(mycase2.getId());
// Set in the Entry all the test cases and update the Entry
entry.setCaseIds(caseList);
testRail.plans().updateEntry(testPlan.getId(), entry).execute();

要执行测试用例,您需要运行测试:

run = entry.getRuns().get(0);
于 2018-10-23T07:56:34.270 回答