使用Ruby更新Rally中的Multi Value Drop Down字段

时间:2016-10-31 17:25:44

标签: ruby rally

我在拉力赛中收集了大量测试用例。为了更容易搜索测试用例,我向测试用例对象引入了一个名为“Functionality”的新字段。该字段具有属性类型“下拉列表(多值)”。现在我需要创建一个Ruby脚本,这样我就可以为此字段分配(可能是多个)值,这就是我的问题所在:我如何编写代码?我假设变量包含一个数组或指向列表的指针。我希望能够分配和删除单个值,而不会影响已分配给特定测试用例的其他值。

通过查看Rally在查询变量时返回的内容,我真的不知道它是如何构造的。

    "https://rally1.rallydev.com/slm/webservice/v2.0/attributedefinition/68878414616", "_refObjectUUID": "8cb97bae-ea25-4805-8e5b-77944ddc4f6a", "_refObjectName": "Functionality", "_type": "AttributeDefinition"}, "StringValue": "Account History", "ValueIndex": 0, "_type": "AllowedAttributeValue"}, {"_rallyAPIMajor": "2", "_rallyAPIMinor": "0", "_ref": 

查看了示例和Rally API,但未能找到有关如何完成此操作的任何信息。

更新:
基于@JPKole的代码片段,我创建了一个程序。

   fields = {:attributedefinition => { '_ref' => this_artifact._ref },
             :stringvalue         => string_value
   }
   puts fields
   puts "Allowed Attribute Value is #{:allowedattributevalue}"
   new_value = @rally.create(:allowedattributevalue, fields)

我认为程序会将正确的值加载到string_value和fields变量中。投注线给出: 处理测试用例TC7203

{:attributedefinition => {“_ ref”=>“https://rally1.rallydev.com/slm/webservice/v2.0/testcase/71703906048”},:stringvalue =>“促销”} 允许的属性值是allowattributevalue

其中71703906048是我正在处理的测试用例的ID。 但后来我得到以下内容:

测试用例TC7203由于错误而未更新

请求时出错 - https://rally1.rallydev.com/slm/webservice/v2.0/allowedattributevalue/create?workspace=workspace/50775741420 - {:errors => [“我们很抱歉!发生了意外错误。

我们已经记录了此错误并将开始调查它。 e,如果您想与我们的支持团队联系,请参考以下信息:
< />com.rallydev.util.UnableToInvokeMethodException:方法AllowedAttributeValue.newAllowedAttributeValue(TestCase)不存在

2016-11-14 01:37  CST America / Chicago“],:warnings => []} C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rally_api-1.2.1/lib/rally_api/rally_json_connection.rb:154:在send_request' C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rally_api-1.2.1/lib/rally_api/rally_rest_json.rb:107:in send_request'中 C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rally_api-1.2.1/lib/rally_api/rally_rest_json.rb:189:in create' C:/Ruby22-x64/Sorens Ruby/UpdateFunct1.rb:118:in块(2级)in' C:/ Ruby22-x64 / Sorens Ruby / UpdateFunct1.rb:103:在each' C:/Ruby22-x64/Sorens Ruby/UpdateFunct1.rb:103:in块中' C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rally_api-1.2.1/lib/rally_api/rally_query_result.rb:22:in block in each' C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rally_api-1.2.1/lib/rally_api/rally_query_result.rb:21:in each' C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rally_api-1.2.1/lib/rally_api/rally_query_result.rb:21:in each' C:/Ruby22-x64/Sorens Ruby/UpdateFunct1.rb:97:in'

知道我做错了吗?

1 个答案:

答案 0 :(得分:1)

" value_strings"是一系列新价值观; " current_allowed_values"是现有值的数组:

 ....
 value_strings.each do |string_value|
   string_value.strip!
   if current_allowed_values.include?(string_value)
     puts "Skipping #{string_value} (already exists)"
   else
     puts "  Adding value: #{string_value}"
     fields = {:attributedefinition => { '_ref' => attribute._ref },
               :stringvalue         => string_value
     }
     new_value = @rally.create(:allowedattributevalue, fields)
   end
 end