【发布时间】:2018-02-28 02:52:25
【问题描述】:
我有一个 API 来获取 ID、名称、数据等列表(TestCase 名称 GET-APIs_OrderdByID_ASC)
我想将这些 ID 转移到同一 TestSuite 或其他 TestSuite 中的其他以下 TestCases。
在 SOAPUI 中,Property Transfer 在同一 TestCase 中的 TestSteps 中工作。 (使用开源版本)。我需要在不同的 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 问题
谁能帮帮我。 :-)
【问题讨论】:
-
每个soapui测试用例都是独立的。你不能传递一些这样的值。您可以使用测试用例
GET-APIs_OrderdByID_ASC中的数据接收器来管理此案例,或者如果您使用免费版本,则只需将您的属性写入文件。然后在您的第二个测试用例中,您调用此属性文件(专业版的数据源或免费读取 groovy 中的文件)并为每个值创建一个循环。 -
@Lerminou 是的,我可以将这些 id 写入外部文件并从那里取回 id 到
setPropertyValue。但我不想使用任何外部文件来存储这些值。它面临 2 个问题 - 提供绝对路径,当我将它放在服务器中进行回归时使用它很忙,当它有大量数据时,写入文件和再次读取非常耗时。 -
您可以使用相对路径与
context.expand('${projectDir}')这是您的项目目录。
标签: arrays json dictionary groovy soapui