在SoapUI的命令行中,如何将某些属性导出到另一个项目?

在SoapUI的命令行中,如何将某些属性导出到另一个项目?,soapui,test-runner,Soapui,Test Runner,在SoapUI中,我有很多项目(单独的xml文件): 第一个(init.xml)将初始化许多属性(例如:sessionId) 另一个项目(other.xml)将使用该sessionID 在GUI中,我只需使用transfert步骤将值传递给全局属性,效果非常好 在命令行testrunner.bat中,我首先运行“init.xml”项目,然后运行另一个(other.xml)。但是在other.xml中,没有设置sessionId。如何将sessionID从init.xml运行导出到“other

在SoapUI中,我有很多项目(单独的xml文件):

  • 第一个(init.xml)将初始化许多属性(例如:sessionId)
  • 另一个项目(other.xml)将使用该sessionID
在GUI中,我只需使用transfert步骤将值传递给全局属性,效果非常好

在命令行testrunner.bat中,我首先运行“init.xml”项目,然后运行另一个(other.xml)。但是在other.xml中,没有设置sessionId。如何将sessionID从init.xml运行导出到“other.xml”运行

以下是我所做的测试:

  • 指定单独的settings.xml(-t testsettings.xml)=>testsettings.xml不更新
  • 一次运行两个步骤(testrunner.bat init.xml test1.xml)=>不受支持
我希望避免将所有项目合并到一个项目中


感谢

要使用init.xml中的通用属性初始化,您可以从other project other.xml的加载脚本中导入init.xml,如下所示:

def initProject = null
if (project.workspace == null) {
    // Case running from command line - loading the init.xml
    initProject = new com.eviware.soapui.impl.wsdl.WsdlProject("init.xml")
} else {
    // Case in GUI having a workspace - put in correct project name
    initProject = project.workspace.getProjectByName("Init")
}
// Invoke test case which sets up global properties
def initCase = initProject.testSuites["foo"].testCases["bar"]
testCase.run(new com.eviware.soapui.support.types.StringToObjectMap(), false)

项目所需的初始化必须在同一个项目中完成,这是一种良好的做法

但你做的不一样,不知道为什么会这样。如果可能,使每个项目独立

如果您仍然希望以与当前相同的方式实现,请使用以下方法:

从命令行运行项目(init.xml)时会发生什么情况?

您期望的更改是在内存中完成的,当您从SoapUI中访问时,这些数据在其他项目中可用,因为这些数据在内存中可用。但是,一旦testrunner完成执行,就不会持久化到project(init.xml)

应该做些什么来保存数据?
您需要添加一个额外的命令行选项,
-S
,以便将数据持久化到项目中

例如,假设下面的命令用于运行
init.xml

testrunner.bat [some options] init.xml
将上述内容更改为以下内容:

testrunner.bat [some options] -S init.xml
当第二个项目运行时,它可以从
init.xml
中提取数据,因为之前发生的更改会被持久化


希望这会有所帮助。

让每个测试用例独立是一种很好的做法。在这里,您正试图依赖于不同的项目。这能在需要的项目中实现吗?