The testRunner.cancel() with stop the execution for the run. So if you have,
SoapRequest or RestRequest Groovy Script1 Groovy Script2
and in Groovy Script1 test step you have testRunner.cancel() it will execute Groovy Script1 but not Groovy Script2. If within the groovy script you want to run it conditionally you have to use if-else clause.