如何在空手道DSL中操作xml文件的变量?

时间:2018-11-22 11:52:52

标签: testing soap cucumber bdd karate

带有空手道DSL的SOAP服务的编号示例非常有限。

我想做的是创建一个XML文件,以后将其用作模板。由于它将成为模板,因此我需要使它的某些部分动态化。 在 .json 文件上创建它很容易,但是我找不到在 .xml 文件上实现它的示例。

下面我们要说的是我的 .xml 文件:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.bigldap.ttech.com/">
<soapenv:Header/>
<soapenv:Body>
    <ws:createwMsisdn>
        <name></name>
        <password>1</password>
        <appId>1</appId>
    </ws:createwMsisdn>
</soapenv:Body>

我想将名称部分转换为动态变量。

我尝试了空手道的 .replace .set 方法,但是没有用。

* def user = read ('classpath:xxx/assign-name-password.xml')
* replace user.name = anotheruser.username
* print user

当打印有效时,它仅向我显示标签,如空标签。 () 我找不到任何相关示例。

任何帮助将不胜感激。 预先感谢。

1 个答案:

答案 0 :(得分:1)

我认为您已经错过了这组示例,文档中已提及了该示例,但未将其作为演示的一部分:xml.feature

我想您会喜欢您发现的东西。有很多选项,包括通过数据驱动表,以下仅是几个:

for ($i = 1; $i <= count($people); $i++) {

  //check if person has a vehicle
  if ($people[$i]['hasVehicle'] == 1) {

    //Owner Name:
    echo $people[$i]['Name'];

    //output plate numbers
    echo
    '<pre>', print_r($people_vehicle[$i], 1), '</pre>';
  }
}