首页 文章

将属性ID(数组)传输到SoapUI / Groovy中的其他TestCase

提问于
浏览
0

我有一个API来获取ID,名称,数据等列表 . (TestCase名称 GET-APIs_OrderdByID_ASC

我想将这些ID传输到同一个TestSuite或其他TestSuite中的其他TestCase .

在SOAPUI中, Property Transfer 在同一TestCase中的TestSteps中工作 . (使用OpenSource版本) . 我需要在不同的TestCases / TestSuites之间传递属性值 .

SOAPUI Preperty Transfer

下面是我可以从一个testCase中提取 ids 的代码,以及我想要传输的testCases / testSteps的名称 .

import com.eviware.soapui.impl.wsdl.teststeps.*
import com.eviware.soapui.support.types.StringToStringMap 
import groovy.json.*

def project = context.testCase.testSuite.project
def TestSuite = project.getTestSuiteByName("APIs")
def TestCase =  TestSuite.getTestCaseList() 
def TestStep = TestCase.testStepList
def request =  testRunner.testCase.getTestStepByName("List_of_APIs_OrderByID_ASC")
def response = request.getPropertyValue("Response")
def JsonSlurperResponse = new JsonSlurper().parseText(response)
def Steps = TestStep.drop(3)
log.info JsonSlurperResponse.data.id   
def id = JsonSlurperResponse.data.id

Steps.each {
    it.getAt(0).setPropertyValue("apiId", id.toString())   
    log.info it.getAt(0).name       
}

如果我运行上面的代码,id [1, 2, 10, 11, 12, 13, 14, 15, 16, 17, 18] 的所有数组值都设置为以下每个testSteps

Groovy Code property transfer

我看了一些其他的SO问题

谁能帮我吗 . :-)

2 回答

  • 0

    正如Leminou建议的那样,我已经对数据链做了些什么 .

    Datasinks是一个很好的解决方案 . 在测试A中,创建数据链接步骤以保留感兴趣的值 . 然后在目标步骤中,使用数据源步骤,该步骤链接到之前由数据链接生成的文件 .

    数据接收器可以配置为在每次测试后重新附加或重新开始 .

    如果您正在努力梳理数据链的值,请创建一个返回所需单个值的groovy步骤,然后在数据链接步骤中调用groovy .

    听起来有点复杂,但它确实有效 .

  • 0

    您可以使用项目级属性或testSuiteLevel属性或testCase属性 .

    通过这种方式,您可以实现与Property Transfer步骤相同但以不同方式获得的相同功能 .

    在源测试用例中写一个groovy步骤到setProperty(保存以后想要使用的值)

    testRunner.testCase.setPropertyValue("TCaseProp", "TestCase")
    testRunner.testCase.testSuite.setPropertyValue("TSuiteProp","TestSuite")
    

    testRunner.testCase.testSuite.project.setPropertyValue( “ProjectLevel”, “ProjectLevelProperty”)

    “TCaseProp”是该属性的名称 . 你可以给任何名字“TestCase”是你想要存储的值 . 例如,您可以提取此值并使用变量

    def val="9000"
    testRunner.testCase.setPropertyValue("TCaseProp", val)
    

    您可以在同一套件的其他情况下使用该属性 . 如果要跨不同的套件使用,可以定义项目级属性

    在目标测试用例请求中使用以下语法

    ${#Project#ProjectLevel}
    ${#TestCase#TCaseProp}
    ${#TestSuite#TCaseProp}
    
    <convertCurrency>${#TestSuite#TCaseProp}</ssp:SystemUsername>
    

    系统将自动替换上述请求中的属性值

    https://www.soapui.org/scripting-properties/tips-tricks.html < - 有用的链接,可以详细解释有关 properties 转移

相关问题