Forum Discussion
Hi Anna,
It depends on what you're going to do next with the content of the file. DataSource steps are generally used with DataSource Loop step. JSON DataSource is useful when you have an array in JSON file (in RowPath node) and need to perform several test steps in a cycle for each array element (Column Paths). In Groovy DataSource you can manually generate each subsequent value - a script will be executed each iteration.
However, judging by the screenshot you want to use file content as body of the request. For this just add File Wait before the request and enter property expansion ${File Wait#fileContent} to Body field. To access the file content from Groovy script use
def fileContent = context.expand( '${File Wait#fileContent}' )
Hi Anton!
Can you cofirm, please if "file wait is proper of PRO SOAPUI version?
Thanks !!
Anna
- AntonE8 years agoSmartBear Alumni (Retired)
Hi, Anna.
No, this step was added only in Ready! API, but it should work with SoapUI Pro license and have lots of new features, so I suggest you give it a try.
- amarcilla8 years agoOccasional Contributor
Hi all !
Another question related:
We are using JSON files to load all the body parameters for a Test Suit with a lot of Test Steps. Most of this parameters are diferent for each Test Step, but they have some common parameters. And every time that some change is done, we should modify every single JSON.
So, We want to automate the JSON's preloading
We are considering to upload files with "file Wait", and before executing the test we want to predefine this common fields.
Which is the best way to do it? Some idea before starting?
Example, All bellow Test Cases have common parameters, but every once in a while we need to change them :
departure: "BCN",
arrival : "LGW",
departureDateTime : "2017-01-04",Thanks very much
Anna- AntonE8 years agoSmartBear Alumni (Retired)
Hi, Anna!
If I understood you correctly, you want to load a JSON that should go to request body from a file, but then change some of its fields during test execution. So, in your example departure, arrival and departureDateTime already exist in JSON file, but you want to change them, while leaving the rest of the parameters as they are in the file, right?
For this scenario you can use File Wait and then Property Transfer with several transfers: the first one should move the file content to the whole request body, and others should move each of your predefined values for common fields to the specific request fields via JSONPath. As transfers are executed in the order of their positions in the list, this should work fine.
Say, your TestCase have 2 custom properties: departure and arrival (you can change its values in groovy script test step at any stage of your test). Then you need one FileWait step in the beginning of your test. Then goes PropertyTransfer, and then - your POST Request.
PropertyTransfer will have 3 transfers (make sure path expressions are correct for your JSON):
1) wholeRequest (Source: FileWait, Property: fileContent; Target: POST Request, Property: Request);
2) departureTransfer (Source: TestCase, Property: departure; Target: POST Request, Property: Request, Path Language: JSONPath, Path: $.departure);
2) arrivalTransfer (Source: TestCase, Property: arrival; Target: POST Request, Property: Request, Path Language: JSONPath, Path: $.arrival).
To execute a request several times with different predefined values, it's more convenient to create a DataSource Loop with some type of DataSource (e.g. Grid, where your can just type your values in the table). DataSource should have properties that correspond your predefined parameters (departure and arrival in my case). Target step for DataSource Loop should be PropertyTransfer. And in Property Transfer for departureTransfer and arrivalTransfer you'll just need to change Source step to DataSource.