EJS
EJS

Reputation: 1071

How to specify working directory for groovy scripts in soap ui?

Currently all groovy scripts i run in soap UI seems to be using "...\SoapUI-5.2.1\bin" as the working directory. From one of the answers to this question I tried setting the Resource Root property of my project, however this has no effect on the working directory that the groovy scripts use.

Example

Create a new project in SoapUI. Add a testsuite, testcase and a groovy script test step. In the test script simply put:

log.info new File("").getAbsolutePath()

Click on the green arrow to run the script. For me this will always return a path to the bin folder of the SoapUI installation.

What I'm looking for

In tools like for example IntelliJ it's possible to specify a working directory in the run configurations for a script. This allows the tool to start the process from any path. In addition to this most other tools will default the working directory to the project folder and not the tools installation folder like SoapUI seems to do.

My current workaround

I'm currently using a working directory variable that I pass to all relevant path strings in my scripts. Using the example above this would look like:

String workingDir = "C:/somedir/"
log.info new File(workingDir  + "somepath").getAbsolutePath()

While this works it's not as elegant as what I can do with other tools like mentioned above.

Upvotes: 0

Views: 11253

Answers (2)

Rao
Rao

Reputation: 21389

Working directory is something which is related to context. And it may vary depending on how / from which directory the respective process is invoked.

For instance, SoapUI can be invoked from command line from different directories.

  • user go to %SOAPUI_HOME%\bin directory and run soapui.bat command.
  • user opens command prompt, and directly run soapui.bat(it requires %SOAPUI_HOME%\bin to be in %PATH%)

The working directory may be different in both the cases.

Well, how do I find it in Groovy Script?

Here you go:

def pwd = new File('.').absolutePath
log.info "Current working directory is ${pwd}"

I would also like to clarify about SoapUI's project property Resource Root. SoapUI allows to have either ${projectDir} or ${workspaceDir} or user can provide his preferred path.

  • ${projectDir} - this is nothing but the parent directory of current soapui project.

If you want to get this location thru Groovy Script? Use one of the below two:

def project = context.testCase.testSuite.project
log.info context.expand(project.resourceRoot)

or

def projectPath = new com.eviware.soapui.support.GroovyUtils(context).projectPath //gets the path of the project root
log.info projectPath

Upvotes: 8

Payam
Payam

Reputation: 1209

according to here, you can change the working directory using two methods:

def processBuilder=new ProcessBuilder("ls")
processBuilder.redirectErrorStream(true)
processBuilder.directory(new File("Your Working dir"))  
def process = processBuilder.start()

or

"your command".execute(null, new File("your working dir")) 

Upvotes: 2

Related Questions