我有一个API来获取ID,名称,数据等列表 . (TestCase名称 GET-APIs_OrderdByID_ASC
)
我想将这些ID传输到同一个TestSuite或其他TestSuite中的其他TestCase .
在SOAPUI中, Property Transfer
在同一TestCase中的TestSteps中工作 . (使用OpenSource版本) . 我需要在不同的TestCases / TestSuites之间传递属性值 .
下面是我可以从一个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
我看了一些其他的SO问题
谁能帮我吗 . :-)
2 回答
正如Leminou建议的那样,我已经对数据链做了些什么 .
Datasinks是一个很好的解决方案 . 在测试A中,创建数据链接步骤以保留感兴趣的值 . 然后在目标步骤中,使用数据源步骤,该步骤链接到之前由数据链接生成的文件 .
数据接收器可以配置为在每次测试后重新附加或重新开始 .
如果您正在努力梳理数据链的值,请创建一个返回所需单个值的groovy步骤,然后在数据链接步骤中调用groovy .
听起来有点复杂,但它确实有效 .
您可以使用项目级属性或testSuiteLevel属性或testCase属性 .
通过这种方式,您可以实现与Property Transfer步骤相同但以不同方式获得的相同功能 .
在源测试用例中写一个groovy步骤到setProperty(保存以后想要使用的值)
testRunner.testCase.testSuite.project.setPropertyValue( “ProjectLevel”, “ProjectLevelProperty”)
“TCaseProp”是该属性的名称 . 你可以给任何名字“TestCase”是你想要存储的值 . 例如,您可以提取此值并使用变量
您可以在同一套件的其他情况下使用该属性 . 如果要跨不同的套件使用,可以定义项目级属性
在目标测试用例请求中使用以下语法
系统将自动替换上述请求中的属性值
https://www.soapui.org/scripting-properties/tips-tricks.html < - 有用的链接,可以详细解释有关 properties 转移