If you are not using Pro, there is a lot you can do with the open source version, but it requires some Groovy scripting. It is not too hard though. The basic premise is: read some data from a CSV -> for each record replace variable values -> call the service with those variables. All in one script.
Let's get the CSV data first:
new File("/path/to/data.csv").splitEachLine(",") { line ->
def address = line[0]
def name = line[1]
def telephoneNumber = line[2]
def id = line[3]
def gender = line[4]
Test to make sure:
log.info(name)
SoapUI uses a concept called properties linked to various levels of scope: a test case, test suite, project and so on. You can populate props like that with the CSV values, and use them in SOAP calls. You can combine this with the above, but I split it for clarity:
testRunner.testCase.setPropertyValue( "address", address )
testRunner.testCase.setPropertyValue( "name", name )
testRunner.testCase.setPropertyValue( "telephoneNumber", telephoneNumber )
testRunner.testCase.setPropertyValue( "id", id )
testRunner.testCase.setPropertyValue( "gender", gender )
You'll see them on the Custom Properties tab if the test case is selected. You can also retreive the values programmatically like this:
log.info(testRunner.testCase.getPropertyValue("name"))
Then, still in the loop, call the web service:
def soapTestStep = testRunner.testCase.getTestStepByName("My SOAP Request").name
testRunner.runTestStepByName(soapTestStep)
If you want the result XML, to save to a file, get it like this:
import com.eviware.soapui.support.XmlHolder
def xml = new XmlHolder(context.response)
End loop:
}
The last part is to get the property values dynamically into the soap call. You do that like this in the request XML:
${#TestCase#address}
${#TestCase#name}
...
Once you realise that you have access to the full Groovy language, a lot of things are possible.