0

在 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)=> 不支持

我想避免将我的所有项目合并到一个项目中。

谢谢

4

2 回答 2

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)
于 2017-06-19T10:06:57.517 回答
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因为之前发生的那些更改是持久的。

希望这会有所帮助。

于 2017-06-19T11:19:58.150 回答