Forum Discussion

Sarita's avatar
Sarita
New Contributor
5 years ago

In SoapUI how to create multiple REST Requests via groovy script?

Hi Experts,

 

I have a bunch of REST request messages in text format. Is there a way to import them to a SoapUI project?

I want to import them and add as "Test Request" Test Step to an existing Test Case.

  • ZDGN's avatar
    ZDGN
    4 years ago

    Hi Sarita,

     

    You were really close ğŸ˜‰.

    You should use "RestRequestStepFactory" instead of "NewRestRequestAction".

    Here is a script that worked for me:

     

    import com.eviware.soapui.impl.wsdl.teststeps.registry.RestRequestStepFactory
    
    // get the current testCase to add testSteps later
    def tc = testRunner.testCase;
    // get the REST TestStep as template to create the other requests
    def tsTemplate = tc.getTestStepByName("REST Request");
    // create the test step factory to use later
    //def testStepFactory = new NewRestRequestAction();
    
    // now get all the request from a specific location...
    
    def directory = new File("C:\\Users\\xxxxxxxxx\\Documents\\xxxxxxxx")
    // for each file in the directory
    directory.eachFile{ file ->
    	// use file name as test step name
    	def testStepName = file.getName()
    	// create the config
    	def testStepConfig = RestRequestStepFactory.createConfig( tsTemplate.getTestRequest(), testStepName)
    	// add the new testStep to TestCase
    	def newTestStep = tc.insertTestStep( testStepConfig, -1 )
    	// set the request from the file content
    	newTestStep.getTestRequest().setRequestContent(file.getText())
    }

     

    Please tell us if the script is working for your case.

     

    David.

  • richie's avatar
    richie
    Community Hero

    Hey Sarita 

     

    you cant just import a bunch of REST requests in text form - BUT - if your REST apis are described in a .wadl file (equivalent to a SOAP Services .wsdl), you can create a project from the .wadl and this will do what you need.

     

    Cheers,

     

    rich

     

    • Sarita's avatar
      Sarita
      New Contributor

      Hi richie,

      Thank you for your reply. 

      I am using REST API URI to create a Project in SoapUI. our REST API's are not described in a .wadl format. I am looking for a groovy script to create multiple requests. Trying the below groovy script, but I am getting error in my code: Looks like I am missing something in my code.

       

      import com.eviware.soapui.impl.rest.actions.method.NewRestRequestAction ;

      // get the current testCase to add testSteps later
      def tc = testRunner.testCase;
      // get the REST TestStep as template to create the other requests
      def tsTemplate = tc.getTestStepByName("Request 1");
      // create the test step factory to use later
      def testStepFactory = new NewRestRequestAction();

      // now get all the request from a specific location...

      def directory = new File("D:/.............................../")
      // for each file in the directory
      directory.eachFile{ file ->
      // use file name as test step name
      def testStepName = file.getName()
      // create the config
      def testStepConfig = testStepFactory.createConfig( tsTemplate.getTestRequest(), testStepName)
      // add the new testStep to TestCase
      def newTestStep = tc.insertTestStep( testStepConfig, -1 )
      // set the request from the file content
      newTestStep.getTestRequest().setRequestContent(file.getText())
      }

      • ZDGN's avatar
        ZDGN
        Contributor

        Hi Sarita,

         

        You were really close ğŸ˜‰.

        You should use "RestRequestStepFactory" instead of "NewRestRequestAction".

        Here is a script that worked for me:

         

        import com.eviware.soapui.impl.wsdl.teststeps.registry.RestRequestStepFactory
        
        // get the current testCase to add testSteps later
        def tc = testRunner.testCase;
        // get the REST TestStep as template to create the other requests
        def tsTemplate = tc.getTestStepByName("REST Request");
        // create the test step factory to use later
        //def testStepFactory = new NewRestRequestAction();
        
        // now get all the request from a specific location...
        
        def directory = new File("C:\\Users\\xxxxxxxxx\\Documents\\xxxxxxxx")
        // for each file in the directory
        directory.eachFile{ file ->
        	// use file name as test step name
        	def testStepName = file.getName()
        	// create the config
        	def testStepConfig = RestRequestStepFactory.createConfig( tsTemplate.getTestRequest(), testStepName)
        	// add the new testStep to TestCase
        	def newTestStep = tc.insertTestStep( testStepConfig, -1 )
        	// set the request from the file content
        	newTestStep.getTestRequest().setRequestContent(file.getText())
        }

         

        Please tell us if the script is working for your case.

         

        David.