2

如何使用 REST API 从 Rally 的测试集中删除测试用例?

它旨在从 JavaScript 调用。我无法在他们的文档中找到信息;一个链接将不胜感激。

4

1 回答 1

2

由于您使用的是 Javascript - 您是否也在使用 Rally 的 AppSDK?如果是这样,那么使用 AppSDK 提供的特权创建一个简单的 AppSDK 示例来显示这一点会相对简单。

如果您直接使用 REST,一个问题是测试用例没有 TestSet 属性字段 - 映射是测试集具有测试用例的集合。这样做的方法是通过 REST 查询测试集:

https://rally1.rallydev.com/slm/webservice/1.34/testset/12345678910

这将提供一个看起来像这样的响应(使用 XML 来提高可读性,建议在实践中使用 JSON):

<?xml version="1.0" encoding="UTF-8"?>
<TestSet rallyAPIMajor="1" rallyAPIMinor="34" ref="https://rally1.rallydev.com/slm/webservice/1.34/testset/1234741798" objectVersion="7" refObjectName=" Data Import Tests" CreatedAt="Mar 29">
  <CreationDate>2012-03-30T00:23:59.964Z</CreationDate>
  <ObjectID>1234741798</ObjectID>
  <Subscription rallyAPIMajor="1" rallyAPIMinor="34" ref="https://rally1.rallydev.com/slm/webservice/1.34/subscription/1231154643" refObjectName="My Subscription" type="Subscription" />
  <Workspace rallyAPIMajor="1" rallyAPIMinor="34" ref="https://rally1.rallydev.com/slm/webservice/1.34/workspace/1234498610" refObjectName="My Workspace" type="Workspace" />
  <Changesets />
  <Description>Tests to validate data import</Description>
  <Discussion />
  <FormattedID>TS11</FormattedID>
  <LastUpdateDate>2012-03-30T00:25:56.544Z</LastUpdateDate>
  <Name>Grid Data Import Tests</Name>
  <Notes />
  <Owner rallyAPIMajor="1" rallyAPIMinor="34" ref="https://rally1.rallydev.com/slm/webservice/1.34/user/1234320127" refObjectName="My Username" type="User" />
  <Project rallyAPIMajor="1" rallyAPIMinor="34" ref="https://rally1.rallydev.com/slm/webservice/1.34/project/1234731604" refObjectName="My Project" type="Project" />
  <RevisionHistory rallyAPIMajor="1" rallyAPIMinor="34" ref="https://rally1.rallydev.com/slm/webservice/1.34/revisionhistory/1234741799" type="RevisionHistory" />
  <Tags />
  <Blocked>false</Blocked>
  <Iteration rallyAPIMajor="1" rallyAPIMinor="34" ref="https://rally1.rallydev.com/slm/webservice/1.34/iteration/1234172067" refObjectName="Iteration 1" type="Iteration" />
  <PlanEstimate>2.0</PlanEstimate>
  <Rank>500000010240.000</Rank>
  <Release rallyAPIMajor="1" rallyAPIMinor="34" ref="https://rally1.rallydev.com/slm/webservice/1.34/release/1234791788" refObjectName="Release 1" type="Release" />
  <ScheduleState>Defined</ScheduleState>
  <Tasks />
  <TestCaseStatus>SOME_RUN_SOME_NOT_PASSING</TestCaseStatus>
  <TestCases>
    <TestCase rallyAPIMajor="1" rallyAPIMinor="34" ref="https://rally1.rallydev.com/slm/webservice/1.34/testcase/1234758065" refObjectName="Test Case 1" type="TestCase" />
    <TestCase rallyAPIMajor="1" rallyAPIMinor="34" ref="https://rally1.rallydev.com/slm/webservice/1.34/testcase/1234757395" refObjectName="Test Case 2" type="TestCase" />
    <TestCase rallyAPIMajor="1" rallyAPIMinor="34" ref="https://rally1.rallydev.com/slm/webservice/1.34/testcase/1234000782" refObjectName="Test Case 3" type="TestCase" />
  </TestCases>
</TestSet>

其中显示了三个测试用例的集合。要删除测试用例 3,您需要提交一个仅包含测试用例 1 和测试用例 2 的 REST 请求,如下所示:

<TestSet ref="/testset/1234741798">
  <TestCases>
    <TestCase ref="/testcase/1234758065"/>
    <TestCase ref="/testcase/1234757395"/>
  </TestCases>
</TestSet>

这将更新测试集,使其删除测试用例 3 并且仅具有前两个测试用例。

您的客户端代码需要遍历来自测试集查询的 REST 响应,并构造一个 POST 请求来丢弃不需要的测试用例并保留您想要的测试用例。

于 2012-06-27T19:11:48.773 回答