运行 SoapUI 中的并行项目

Running parallel projects in SoapUI

我在 SoapUI 中为 运行ning 并行项目编写了一个 groovy 脚本,并将其放在名为 'Project1' 的项目的测试步骤中。我能够 运行 并行执行项目,但是当我使用批处理文件来安排执行时,它失败了。它说

"Cannot get property 'projects' on null object"

用于定义 'project1' 的行。它仍然执行第一个项目,因为 groovy 脚本位于 'Project1'.

并行执行项目的groovy脚本:

import   com.eviware.soapui.model.propertyexpansion.DefaultPropertyExpansionContext

def project1=testRunner.testCase.testSuite.project.workspace.projects["Project1"]
def project2=testRunner.testCase.testSuite.project.workspace.projects["Project2"]

DefaultPropertyExpansionContext con1=new DefaultPropertyExpansionContext(project1) 
DefaultPropertyExpansionContext con2=new DefaultPropertyExpansionContext(project2) 
project1.run( con1,true)
project2.run( con2,true)    

如果您 运行 SOAPUI 使用 testrunner.bat 的项目,您必须注意,您 运行 项目是单独的,因此您无法访问 testRunner.testCase.testSuite.project.workspace 属性。

testrunner.bat properties on documentation好像没有符合你要求的参数。

也许我错了,这个案例有一些东西(我不是使用 testrunner.bat 的专家),但是 运行 两个项目并行的可能解决方法是避免调用您的 groovy testStep 改为调用 testrunner.bat 两次,为每次调用指定正确的项目 xml 文件。

另一种可能的解决方法(基本相同)是修改您的 groovy 脚本以执行这两个命令(而不是从命令行调用它)。因此,您使用 testrunner.bat 执行一个项目,并使用以下 groovy testStep 脚本执行其他项目。尝试将您的 groovy 脚本修改为:

def project1 = ["$SOAPUI_HOME/testrunner.bat","-sServiceAPIs","-j","-f",..].execute()
def project2 = ["$SOAPUI_HOME/testrunner.bat","-sServiceAPIs","-j","-f",..].execute()

请注意,您的命令中的每个参数都需要一个字符串,并且 execute() 不要等待命令完成,以便您的项目 运行 并行。

如果您想了解有关 groovy 命令执行的更多信息,请查看 documentation

希望这对您有所帮助,