如何以编程方式更改VersionOne中的测试状态?

时间:2014-03-29 16:22:22

标签: c# versionone

我发布这个是因为它可能会帮助使用VersionOne API SDK客户端的人。我想以编程方式将测试的状态更改为以下类别之一:Ready,InTesting,Passed或Failed。我最初尝试更改属性'Status.Name'但是我会得到一个错误,该属性是只读属性。另一个建议是创建一个具有相同名称的新属性,并且新属性将覆盖具有相同名称的先前只读属性。然而,看起来我正在向后看它。

internal void TestStatusPassed(string str_TestID)
{
     var testId = Oid.FromToken(str_TestID, _context.MetaModel);
     var query = new Query(testId);
     var testType = _context.MetaModel.GetAssetType("Test");
     var sourceAttribute = testType.GetAttributeDefinition("Status.Name");
     query.Selection.Add(sourceAttribute);
     var result = _context.Services.Retrieve(query);
     var test = result.Assets[0];
     var oldSource = GetValue(test.GetAttribute(sourceAttribute).Value);
     test.SetAttributeValue(sourceAttribute, "Passed");
     _context.Services.Save(test);
 }

此代码将抛出异常“无法更改只读属性”...

1 个答案:

答案 0 :(得分:1)

我从VersionOne Rest API中提取了一个测试的XML数据,并注意到一个名为“TestStatus”的关系,然后分配了一个数字“9123”。所以我将该测试手动移至'In Testing'并将“TestStatus”更改为'9121'。然后我将其移至失败状态,并将“TestStatus”更改为“155”。我通过不同测试集的几个测试重复了这一点,并注意到每个状态的数字是一致的,然后稍微改变了代码,然后我能够以编程方式更改每个测试的状态。我将“Status.Name”更改为“Status”并将“Passed”更改为“TestStatus:9123”,现在它将测试以编程方式移动到传递的类别中。

internal void TestStatusPassed(string str_TestID)
{
     var testId = Oid.FromToken(str_TestID, _context.MetaModel);
     var query = new Query(testId);
     var testType = _context.MetaModel.GetAssetType("Test");
     var sourceAttribute = testType.GetAttributeDefinition("Status");
     query.Selection.Add(sourceAttribute);
     var result = _context.Services.Retrieve(query);
     var test = result.Assets[0];
     var oldSource = GetValue(test.GetAttribute(sourceAttribute).Value);
     test.SetAttributeValue(sourceAttribute, "TestStatus:9123");
     _context.Services.Save(test);
 }