It seems context.expand is the answer to my problem. Printing just the content of the property or extracting the value of the property will not help as the properties within the string have to be expanded which seems to be automatic in a test request step.
prop = "PropertyName"
log.info testRunner.getTestCase().getTestSuite().getPropertyValue( prop )
//returns
<key xmlns="URL"><ownerDN>${#TestSuite#btc_OwnerDN}</ownerDN><context><contextItem name="${#TestSuite#btc_ContextItemName_1}">${#TestSuite#btc_ContextItemValue_1}</contextItem><contextItem name="${#TestSuite#btc_ContextItemName_2}">${#TestSuite#btc_ContextItemValue_2}</contextItem><contextItem name="${#TestSuite#btc_ContextItemName_3}">${#TestSuite#btc_ContextItemValue_3}</contextItem></context><type>${#TestSuite#btc_Type}</type><value>${#TestSuite#btc_Value}</value></key>
however if we use
log.info context.expand('${#TestSuite#btc_PartyKey}')
or
prop = "PropertyName"
pValue testRunner.getTestCase().getTestSuite().getPropertyValue( prop )
context.expand(pValue)
returns the string with values instead of property names
Sorry, I should have thought of context.expand before posting the question but leaving it here just in case someone else is thinking of this same problem.