试图写一个groovy脚本来建立动态变量,以便在SoapUI中运行测试用例。

问题描述 投票:0回答:1

我们已经有了可以运行的groovy runner脚本,我试图修改它,让团队更容易选择和取消选择要运行的环境和测试。

所有可能的测试和环境在groovy脚本的测试用例中都有自己的自定义属性,如果自定义属性设置为0,测试就不会运行。

我的脚本通过查看每个环境和测试的自定义属性来建立2个变量,它工作得很好,直到脚本的其余部分读取脚本第一部分建立的变量。

这里是其中一个变量构建脚本。

runEnv =  "["
// Env. 7031
    if (testRunner.testCase.getPropertyValue( 'Env-7031' ) == '1')
        {runEnv = runEnv + "'7031'"}
// Env. 7131
    if (testRunner.testCase.getPropertyValue( 'Env-7031' ) == '1')
        // runs if a comma is needed to separate values
        {if (testRunner.testCase.getPropertyValue( 'Env-7131' ) == '1')
            {runEnv = runEnv + ",'7131'"}}
    else
        // runs if value is the first in line and doesnt need comma
        {if (testRunner.testCase.getPropertyValue( 'Env-7131' ) == '1')
            {runEnv = runEnv + "'7131'"}}
// Adding the end of runEnv
runEnv = runEnv + "]"
// Verification message confirming what environment(s) will be tested
log.info 'Environment Selection is: ' + runEnv

runEnvironment = runEnv

这个脚本的预期结果是,如果env-7031的自定义属性设置为1,env-7131设置为0,那么runEnvironmet的值将是['7031']。

当我运行这个脚本时,我得到了这个日志。

Wed May 06 07:09:38 EDT 2020:INFO:Environment Selection is: ['7031']
Wed May 06 07:09:38 EDT 2020:INFO:Test Case Selection is: ['Build-Deploy - All Tables']
Wed May 06 07:09:38 EDT 2020:INFO:Release Artifact Runner
Wed May 06 07:09:38 EDT 2020:INFO:Start Test Runner
Wed May 06 07:09:38 EDT 2020:INFO:Environment: [

我们可以看到,环境并不像它应该的那样。[代替['7031']

是否可以用groovy这样的方式来构建一个变量?

TL:DR

试图获得一个硬编码的变量

runEnvironment = ['7031']

从一个脚本中使用自定义属性从头开始建立该变量,就像这个模拟。

runEnvironment = '[' + "'7031'" + ']'
groovy soapui
1个回答
0
投票

我的问题是,我正在建立一个文本字符串.脚本需要一个数组去通过。

这就是我如何学会创建我的数组。如何在Groovy soapUI中定义数组?

这是我最后的脚本。

def maxEnv = 0  
// defining how many environments the array will include
    // Env. 7031
        if (testRunner.testCase.getPropertyValue( 'Env-7031' ) == '0'){}else{
            testRunner.testCase.setPropertyValue( 'Env-7031', '1' ) 
            maxEnv = maxEnv + 1 }
    // Env. 7131
        if (testRunner.testCase.getPropertyValue( 'Env-7131' ) == '0'){}else{
            testRunner.testCase.setPropertyValue( 'Env-7131', '1' ) 
            maxEnv = maxEnv + 1 }

log.info maxEnv ("Environments")

// Building runEnv array
def runEnv = new Object[maxEnv]
curEnv = 99

    // Env. 7031
        if (testRunner.testCase.getPropertyValue( 'Env-7031' ) == '1')
            {if (curEnv == 99){curEnv = 0}else{curEnv = curEnv + 1)
            runEnv[curEnv] = '7031'} else {}
    // Env. 7131
        if (testRunner.testCase.getPropertyValue( 'Env-7131' ) == '1')
            {if (curEnv == 99){curEnv = 0}else{curEnv = curEnv + 1)
            runEnv[curEnv] = '7131'} else {}

runEnvironment = runEnv
© www.soinside.com 2019 - 2024. All rights reserved.