Randomly generated values in requests and other ReadyAPI functions
Current situation ReadyAPI DataGenerator provides different random values (random integer, email, name, city, etc.) I like this function since it creates nice test data. However, the random values are only accessible via DataGenerator DataSource. Proposal It would be great if we could use them in: REST, SOAP, and other requests Variable setup Groovy scripts etc. In ReadyAPI the random values could be available via: expansion e.g. ${#Random#FirstName} Get data function adding a Random category in the top level Implementation proposal Wrapping Java Faker (https://github.com/DiUS/java-faker ) would do the task. Java faker can be configured to use localized data (e.g. english names, spanish names, etc.) The faker provides a lot of interesting data useful for testing, just to name few of them: Address Animal App Artist Avatar Aviation Book Business Company Color File Finance Food Name Nation Number PhoneNumber and many more, including some funny categories like ChuckNorris.1.7KViews6likes3CommentsRe-insert the Assertion HTTP
in version 3.9.0 there is a smartAssertion created that deprecates the HTTP assertions. As all of my testcases (a huge amount) have this assertion I'm not going to adapt them manually as this will take a huge effort to do so. No clue why Smartbear has deleted this assertion as I think quasi all of the testers are using this!? Please, re-install the HTTP assertions!1.8KViews3likes3CommentsHow to change the API of a REST test step
Hi guys, If you test REST APIs in SoapUI, you may encounter an issue where you cannot change the API attached to the REST test step. I am not aware of any standard way to do it, so I prepared a simple Groovy script to change the test step's API programmatically: testRunner.testCase.getTestStepList().each(){ step = it service = step.getService() log.info("TestStep: ${step.getName()}") config = step.getRequestStepConfig() log.info "Before: ${step.getService()}" config.setService("BankGround_v1.12") log.info "After: ${step.getService()}" } I thought this may help those of you who work with REST APIs, which get changed over time (new versions). For a longer story, you can visit the following article: https://www.linkedin.com/pulse/soapui-what-rest-api-changes-karel-husa-7vb2e24Views2likes0CommentsDelete multiple selected request headers at once [BUG?]
Current behaviour: 1) In the additional request headers tab of a SOAP/REST test step I select multiple headers (the selected headers visually are selected by having the color blue = OK). 2) I click on the delete bin button. 3) Only the first header is deleted. Expected behaviour: ALL of the selected headers should be deleted. If a use wants to delete 10 headers he now has to manually select them and delete them one-by-one. This is frustrating. Note: this issue has been around for ages. Additionally: We (luckily) can select and copy the headers properly by doing a select and then Ctrl+C. The feature of copy-pasting request headers might not be really visible in the UI (e.g. there is no "copy" button), but I am very grateful this is possible through Ctrl+C. Might be wise to visually allow this to?1.1KViews2likes1CommentTip : Use of tags in command line via bamboo build - Run all tests while sending -T tags parameters
In our CI build pipeline (bamboo) I setup two parameters tagTestSuite and tagTestCase. This way, all our automation testers can specify, if needed, which test cases need to be ran based on certain tags. This works fine if there are indeed such tags passed on. But what if a project just wants to run all of its tests? These -T parameters cannot be left empty in the command line as that fails the build... Deleting them from the bamboo variables will then lose the standardized approach for all testers to do a tag-based execution. Seeing the documentation here (https://support.smartbear.com/readyapi/docs/functional/running/automating/cli.html)I noticed you can provide logical operators. So I thought I came up with a nice solution: I provide as default value for those parameters in bamboo a tag value that nobody would use and by setting the "!" operator in front of it I'd expected thatALL test suites/cases would run. So I've set parameters and resulted in a command line that has these : "-TTestSuite !itShouldRunAllTestSuites" "-TTestCase !itShouldRunAllTestCase". Since none of the testSuite/testCases has a tag "itShouldRunAllTestSuites" or "itShouldRunAllTestCases" I thought my project would be run in full.... But nope: error is shown:[errorlog] java.lang.Exception: The tag "itShouldRunAllTestSuites" was not found. Yes, I could go and add a tag to every single test suite and test case to work around this, but that could be tedious and not so future proof... Solution: ReadyAPI seems to look first for a tag and then complain it wasn't found. So I tried this: I've added the tags "itShouldRunAllTestCases" and "itShouldRunAllTestSuites" to my project but did not tag any of my testsuites/testcases with this tag. Executed above again and now ALL of my tests get's executed nicely!847Views2likes2CommentsExcel datasink to consume repeating xml elements without having to map multiple properties
Currently there's no functionality that provides the abiltiy to map an XML rest response with repeating elements to a datasink without mapping each indivitual repeating element. Example:https://community.smartbear.com/t5/SoapUI-Pro/How-to-map-repeating-elements-from-xml-response-to-datasink/m-p/199559#M45747 Is there a way to map a repeating element from a response into a datasink automatically, rather than having to click getData and manually clicking each one. So, if I have 25 repeating elements. Widgets again. They all have the same attributes. A1, A2, A3. I want my sink to collect each of the attributes from each of the widgets, but I don't want to have to map it explicitly in the data sink property and the every one of the 25 widgets (x3 attributes) in my response. example: <widgets> <widget> <att1>abc</att1> <att2>xyz</att2> <att3>asd</att3> </widget> <widget> <att1>abc</att1> <att2>xyz</att2> <att3>asd</att3> </widget> ... </widgets> In my datasink, I'd like to map these out 1 element to 1 row in excel: excel row 1 (first widget): att1: abc,att2: xyz,att1: asd excel row 2 (second widget): att2: abc,att2: xyz,att1: asd What I'm trying to avoid is this: All the way through dozens of these objects.1.6KViews2likes1CommentRamping up your usage of SOAP UI NG ? Check out our Free weekly Training webinar!
Hello all, Have you recently bought new Ready! API licenses and are about to kick start your API tests? Register here for our Free Weekly interactive Webinar, Next one is on the 7th of September( day after Labor day) What to expect? Advice on getting up and running on your SOAP and REST projects Hidden gems within the tool that you may not uncover on your own Personalized question-and-answer with our API experts If you have 10+ users and would like to get your users on-boarded, please reply to this message and I'll be in touch. Cheers, Katleen B Snr. Customer Success Advisor EMEA kbb(at)smartbear.com1.4KViews2likes0CommentsProperty transfer version 5.7.2 not removing double quotes.
I am doing property transfer by using the setup script through sql. My request has something which should be in []. I have created the propert transfer like below For the Target i have given like below. $.dispositionIds In the setup script I am giving like below. String dispositionIds = rows.DISPOSTN_ID //Set Property value testRunner.testCase.setPropertyValue( "DISPOSTN_ID", dispositionIds ) After runng the script I am getting the value in double quotes "" like shown below. "dispositionIds":"[1282678]" ---But becasue of the double quotes, My request is thrownig an error saying invalid json. My Colleagesue have a differnt verison soap 5.6.0 and it is working fine for them.Set Authorization Method defaults in Auth Manager which can be inherited by environments
Each of my Ready API projects have dozens of tests and 10+ environments each. The authorization methods for each API request/test is the same across all environments, but any time I need to make changes, or add new requests/tests, I have to open up the environment configuration window. and then for each environment I have to: select the api > Edit > Authorization > Configure > Auth Manager > expand out all of the requests/test steps > make any changes (which is like 3 mouse clicks each plus some scrolling) > close > save And then repeat the exact same steps 10+ more times. Even using inheritance within an environment as much as I can, it's incredibly tedious, and often leads to developers making quick one-off changes in the request/test itself which gets applied inconsistently across environments and then wonder why our automated tests start failing I propose being able to use Auth Manager in the "No Environment" to set the authorization methods in one place, which can then be applied to all environments (unless overridden). Basically, in addition to Inherit From Parent, there could be an Inherit From Default Environment. That way, if an environment will be using all the defaults I only need to touch the environment level auth manager once, set Inherit From Default Environment at the project level for each environment, and then apply that to all dependencies. Any time changes need to be made, I could open up the No Environment Auth Manager, make my changes there, and know it will apply to all all environments inheriting from the default.19Views1like0Comments