使用Robot Framework中的SUDS库使用objectTypes创建Soap消息

时间:2016-06-01 11:31:59

标签: soap robotframework suds

我正在努力使用带有SUDS库的机器人框架来创建这部分肥皂消息。

<ns1:Request>
    <ns0:ID objectType="SomeType">Value</ns0:ID>
</ns1:Request>

如果我喜欢这样,那么我得到的只是我需要的但不是objectType。

${object}=    Create Wsdl Object    ns19:RequestTypeSingle
Set Wsdl Object Attribute    ${object}    ID    1234

输出

  <ns1:Request>
    <ns0:ID>1234</ns0:ID>
  </ns1:Request>

如果我检查我的ns19:RequestTypeSingle想要得到这个:

${object} = (RequestTypeSingle){
   ID = 
      (ID){
         _objectType = ""
      }
 }

&#34; RequestTypeSingle&#34;定义

<xs:complexType name="RequestTypeSingle">
 <xs:sequence>
  <xs:element minOccurs="1" maxOccurs="1" name="ID" nillable="true">
   <xs:complexType>
    <xs:simpleContent>
     <xs:extension base="xs:string">
      <xs:attribute name="objectType" type="xs:string"/>
     </xs:extension>
    </xs:simpleContent>
   </xs:complexType>
  </xs:element>
 </xs:sequence>
</xs:complexType>

那我如何用SUDS或其他一些声明这个&#34;(ID){_ objectType =&#34;&#34;}?

感谢ombre42,这可以这样做(第一个问题回答):

${req}=    Create WSDL Object    ns19:RequestTypeSingle    # may need namespace prefix here
Set Wsdl Object Attribute    ${req.ID}    _objectType    SomeType

(继续提问)。 然而,这不会像我在请求示例中提到的那样设置值。似乎这种语法可行,但事实并非如此。关于这个的任何好主意?

这将产生错误:&#34; ValueError:Object必须是WSDL对象(suds.sudsobject.Object)。&#34;

${req}=    Create WSDL Object    ns19:RequestTypeSingle    # may need namespace prefix here
Set Wsdl Object Attribute    ${req}    ID    1234
Set Wsdl Object Attribute    ${req.ID}    _objectType    SomeType

这将覆盖第一个_objectType定义。

${req}=    Create WSDL Object    ns19:RequestTypeSingle    # may need namespace prefix here
Set Wsdl Object Attribute    ${req.ID}    _objectType    SomeType
Set Wsdl Object Attribute    ${req}    ID    1234

覆盖的意思是我得到这个:

  <ns1:Request>
    <ns0:ID>1234</ns0:ID>
  </ns1:Request>

1 个答案:

答案 0 :(得分:0)

为表示为XML属性而不是元素的属性赋值时,请在名称前加上下划线(为什么_objectType而不是objectType)。

${req}=    Create WSDL Object    RequestTypeSingle    # may need namespace prefix here
Set Wsdl Object Attribute    ${req.ID}    _objectType    SomeType