我在拉力赛中收集了大量测试用例。为了更容易搜索测试用例,我向测试用例对象引入了一个名为“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
'
知道我做错了吗?
答案 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