在SoapUI中,我有很多项目(单独的xml文件):
- 第一个(init.xml)将初始化很多属性(例如:sessionId)
- 另一个项目(其他.xml)将使用该会话 ID
在 GUI 中,我只需使用transfert 步骤将值传递给全局属性,效果很好。
在命令行 testrunner.bat中,我首先运行"init.xml"项目,然后运行另一个(other.xml)。但在另一个.xml中,未设置会话 ID。如何将会话 ID 从 init.xml 运行导出到"其他.xml"运行?
这是我所做的测试:
- 指定单独的设置.xml (-t 测试设置.xml) => 测试设置.xml未更新
- 将两个步骤合二为一(测试运行程序.bat初始化.xml test1.xml)=> 不支持
我想避免将所有项目合并为一个项目。
谢谢
要使用 init.xml 属性的通用初始化,您可以从其他项目的加载脚本中导入 init.xml.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 中时,这些数据在其他项目中可用,因为该数据在内存中可用。但是,一旦测试运行程序完成执行,就不会持久化到项目 (init.xml)。
为了持久保存数据,应该怎么做?
您需要添加额外的命令行选项-S
,以便将数据保存到项目中。
例如,让我们假设以下命令用于运行init.xml
。
testrunner.bat [some options] init.xml
将上述内容更改为以下内容:
testrunner.bat [some options] -S init.xml
当第二个项目运行时,它可以从init.xml
中选取数据,因为之前发生的更改会持久保存。
希望这是有帮助的。