我在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)
答案 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。
希望这有帮助,