SOAPUI如何在Property Transfer目标中将值增加1?

时间:2019-03-14 16:02:15

标签: soapui

有两个测试步骤,并试图将一个测试步骤中的“属性值”添加到另一测试步骤中,并将其增加1。转移不是问题,而是如何将其增加1?

4 个答案:

答案 0 :(得分:0)

我尝试如下... 在测试用例级别“ incrementValue”上创建了一个属性,并为其分配了值1。 添加了请求“ GetNextCrossMessage 1-请求2”,并在此请求中将$ {#Property Transfer#incrementValue}添加到请求中的输入元素。 添加了Groovy脚本:

def incrementValue = context.expand( '${#Property Transfer#IncrementValue}' );
incrementValue = incrementValue.toInteger() + 1;

if (incrementValue <= 10) {
testRunner.testCase.setPropertyValue("IncrementValue", incrementValue);
log.info "IncrementValue: "+incrementValue;
testRunner.gotoStepByName("GetNextCrossMessage 1 - Request 2"); 
}

在groovy脚本中出错:java.lang.numberformatexception:对于输入字符串“”。请问哪里出问题了?

答案 1 :(得分:0)

如果上面的代码确实是Groovy测试步骤,则问题出在第1行。您的代码看起来像是希望从名为“ Property Transfer”的测试步骤中获得IncrementValue值,但是您的文字显示您已添加了自定义属性到测试用例,命名为IncrementValue。

要从“测试用例”客户属性中“提取”值,您需要执行此操作...

def incrementValue = context.expand( '${#TestCase#IncrementValue}' );

def incrementValue = testRunner.testCase.getPropertyValue("IncrementValue");

您得到的错误是因为您试图将整数写入字符串属性。将整数转换为字符串即可使用。

查看示例...

def incrementValue = testRunner.testCase.getPropertyValue("IncrementValue");

incrementValue = incrementValue.toInteger() + 1;


if (incrementValue <= 10) {
    // Prop name AND value are strings...
    testRunner.testCase.setPropertyValue("IncrementValue", incrementValue.toString());
}

log.info(incrementValue);

答案 2 :(得分:0)

感谢所有人,尤其是克里斯。我已经对其进行了一些修改,这是用于从TestSteps级别增加值的Groovy脚本...

def terminalid = testRunner.testCase.getTestStepByName("GetNextCrossMessage 1 - 
Request 1") .getPropertyValue("terminalid");
terminalid = terminalid.toInteger() + 1;

if (terminalid <= 2) {

testRunner.testCase.getTestStepByName("GetNextCrossMessage 1 - Request 2").setPropertyValue("terminalid",terminalid.toString())
log.info(terminalid);
}

答案 3 :(得分:0)

我知道它已经有将近1.5年的历史了,并且已经用groovy脚本解决了,但是最初的问题是关于Property Transfer,所以也许有些观众会发现上述步骤有用的解决方案。

  1. 在源步骤和目标步骤之间添加Property Transfer步骤。
  2. 在其中添加新的Property Transfer
  3. 您的来源步骤设置为来源
  4. 属性设置 ResponseAsXml
  5. 路径语言设置 XPath
  6. 在公式字段中输入类似${#ResponseAsXml#count(//e/id)}+1您必须用要增加的属性的xpath替换 //e/id )。
  7. li>
  8. 您的目标步骤设置为目标
  9. 所需属性设置为属性

See example

在上面的示例中,我是:

  • GetMembers步骤中获取项目成员列表,
  • 通过id进行计数,并以SaveUsersCnt的步长递增,
  • 将值传递给UsersInheritedCnt中的Vars变量,
  • 稍后在声明GetMembersIncludingInherited步骤时使用它。