在SoapUI中,我有很多项目(单独的xml文件):
在GUI中,我只是使用 transfert步骤将值传递给全局属性,并且效果很好。
在命令行testrunner.bat 中,我首先运行" init.xml"项目,然后是另一个(other.xml)。但是在other.xml中,未设置sessionId。如何将sessionID从init.xml运行导出到" other.xml"运行
以下是我测试的内容:
我想避免将我的所有项目合并到一个项目中。
由于
答案 0 :(得分:0)
要使用init.xml中的属性的公共初始化,您可以从其他项目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)
答案 1 :(得分:0)
项目所需的初始化必须在同一项目中完成,这是一种很好的做法。
但是你做的与众不同,不确定为什么会这样。如果可能,请使每个项目独立。
如果您仍希望以与当前相同的方式实现,请使用以下内容:
从命令行运行项目(init.xml)会发生什么?
您期望在内存中完成更改,并且当您从SoapUI中获取这些数据时,这些数据在其他项目中可用,因为该数据在内存中可用。但是,一旦testrunner完成执行,它就不会持久化到项目(init.xml)。
为了保存数据应该怎么做?
您需要添加一个额外的命令行选项-S
,以便将数据持久保存到项目中。
例如,我们假设下面的命令用于运行init.xml
。
testrunner.bat [some options] init.xml
将上述内容更改为:
testrunner.bat [some options] -S init.xml
当第二个项目运行时,它可以从init.xml
中选择数据,因为之前发生的更改会被保留。
希望这有用。