如何将测试用例添加到使用Java从API到TestRail的API的现有测试中?

时间:2018-10-15 14:37:05

标签: java api selenium automation testrail

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

我已尝试在运行过程中以及在更新运行过程后使用setCaseIds,但是会覆盖现有的运行过程。我认为错误是因为我正在使用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();

有人知道该怎么做吗?预先谢谢你。

2 个答案:

答案 0 :(得分: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();

因此,您不只是设置新的ID,而是从运行中获取现有ID,然后向其中添加ID并更新运行。

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

答案 1 :(得分: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);