在SoapUI中运行并行项目

时间:2015-02-06 04:19:58

标签: soapui

我在SoapUI中编写了一个用于运行并行项目的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)    

1 个答案:

答案 0 :(得分:1)

如果您使用SOAPUI运行testrunner.bat项目,则需要注意您单独运行项目,以便无法访问testRunner.testCase.testSuite.project.workspace财产。

查看testrunner.bat properties on documentation似乎没有符合您要求的参数。

也许我错了,这种情况有所帮助(我不是使用testrunner.bat的专家),但是并行运行这两个项目的可能解决方法是避免调用你的{ {1}}而是两次调用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

希望这有帮助,