2017-09-28 5 views
1

SOAP応答に含まれる値に対して前のJDBC応答ステップの値を検証するGroovyスクリプトアサーションを作成しています。SOAPUI実際の結果の周囲の角括弧でアサートが失敗する

スクリプトを実行すると、両方の値が同じに戻りますが、実際の結果値(SOAP応答から)が角括弧で囲まれているため、アサートが失敗することがわかります。私はこれは、文字列と1つではないものと何か関係があると思いますか?

アサートが確実に通過するように、実際の結果から角括弧を除去するか、期待される結果値に追加する方法を教えてください。

以下は私のアサートスクリプトです。あなたはそれで単一の要素を持つ配列を取得している場所として期待どおりに単一の値を期待しているので、結果は001 実際の結果である期待

は[001]

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent) 
def pxml = new XmlSlurper().parseText(context.response) 

//grab the expected result from jdbc response 
def expectedCodes = context.expand('${JDBC Request#ResponseAsXml#//*:TW304_PRODHIST.PRODUCT_1}') 

//grab the actual result from the SOAP response 
def actualCodes = pxml.'**'.findAll{it.name() == 'CurrHospProductCode'}*.text() 

assert expectedCodes == actualCodes 

log.info expectedCodes 
log.info actualCodes 

答えて

2

です。

それが正しい場合は、以下のようにそれを行うことができます。

assert expectedCodes == actualCodes[0] 

サイドノートでは、あなたは慎重にチェックする必要がありますあなたは本当にのみ、または値のリストを取得することがある場合は、単一の値を期待しています。

EDIT:あなたのスクリプトに基づいています。 findAllは結果としてリストを表示します。 xmlに単一要素があると予想される場合は、それをfindに変更すると、実際のコードはそのまま動作するはずです。

+0

ありがとうございます。 [0]を追加する最初の応答は、テストパスをうまく行いました。私は 'findAll'を' find'で置き換えようとしましたが、同じ問題がそこに存在します。しかし、私はあなたの最初の答えに基づいてこれを今答えたものとしてマークすることができます。 – Matt

+0

これは、 'text()'の前に '*'があるためです。 'find'を使うと' * 'も取り除くことができます。 – Rao

+0

はい、そうです。すべてが理にかなっています。これに私に答えてくれてありがとう。 – Matt

関連する問題