2017-03-07 14 views
0

私はSoapUIツールを初めて使用しています。私はSoapUIバージョン5.3.0を使用しています。私のアプリケーションには、RESTfulなAPIがいくつかあります。私は以下のようにJSONリクエストの形でWebサービスへの複数のリクエストを送信しています:SoapUI - 負荷テスト-Assertion:SoapUIを使用した負荷テストへのアサーションの追加

{ 
    "app_key":"i8gAVDwcAq40n2kAv6Ox+w==", 
    "targetDB":"${#TestCase#TARGET_DB}", 
    "createNew": "true" 
} 

を次のようにWebサービスからの応答は次のとおりです。

<StartDataExtractResult xmlns="http://schemas.datacontract.org/2004/07/AriaTechCore" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <StatusCode>1</StatusCode> 
    <StatusText>success</StatusText> 
    <RequestNumber>101</RequestNumber> 
</StartDataExtractResult> 

私が生成するのGroovyスクリプトを使用しています「TARGETDB」のための動的な名前を次のように

def targetdb = ((context.expand('${#TestCase#TARGET_DB}') ?: 100) as Integer) + 1 
log.info "Target db for current request : ${targetdb}" 
context.testCase.setPropertyValue('TARGET_DB', targetdb.toString()) 

を私は要求に「101」と「TARGETDB」の名前を渡すと目に101タグの作成になりますように、私のテストデータを設計しています応答。 負荷テストが正常に実行されています。

ここで、StatusCodeタグに「1」、StatusTextタグに「success」が含まれているかどうかを確認するために、それぞれの負荷テスト応答にいくつかのアサーションを追加します。& RequestNumberタグに変数 "$ {#TestCase# TARGET_DB} "(Request jsonで送信)。

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent) 
holder.namespaces["ns1"] = "http://schemas.datacontract.org/2004/07/AriaTechCore" 

def nodeStatusCode = holder.getNodeValue("//ns1:StatusCode") 
assert nodeStatusCode != null 
if(nodeStatusCode=="1") 
{ log.info "Pass" } 
else 
{ log.info "Fail"} 

def nodeStatusText = holder.getNodeValue("//ns1:StatusText") 
assert nodeStatusText != null 
if(nodeStatusText=="success") 
{ log.info "Pass" } 
else 
{ log.info "Fail"} 

def nodeRequestNumber = holder.getNodeValue("//ns1:RequestNumber") 
assert nodeRequestNumber != null 
if(nodeRequestNumber=="${TARGET_DB}") 
{ log.info "Pass" } 
else 
{ log.info "Fail"} 

をしかし、私はエラーを取得しています::次のように私は、スクリプトのアサーションを書いたことを達成するために

No such Property: TARGET_DB for class: Script 53

することは誰も私をしてください助けることはできますか?ここで

は私のプロジェクトのスクリーンショットです:Assertion

+0

質問は何ですか?上記のアサーションを追加しましたが、動作していませんか?あなたはそれらを追加する方法を知らないのですか?どうか明らかにしてください。 – Rao

+0

StatusCodeが "1"で、StatusTextが "成功"で値が "101"であることを検証するWebService(Load Test Suiteによって生成されている)からの10 Request/Responseのアサーションを作成します。私は単一のリクエスト/レスポンスのアサーションを追加しました。しかし今、私はすべてのリクエスト/レスポンスのためにそれをしたいと思います。 – DebanjanB

+0

さて、上記のアサーションをリクエストステップ(あなたの場合は2番目)に入れることができます。負荷テストを実行すると、それらは毎回実行されるため、後で実行する必要はありません。 – Rao

答えて

0

私は別のforumからこのクエリに対する答えを持っています。私たちは、次のようにプロパティとしてステップを作成して、私たちは、プロパティのために別のGroovyスクリプトを追加する必要があり、「databaseNameの」

  • としてそれにプロパティを追加する必要があります

    1. :ここでの質問への答えがある

      ストリングたTestString = '$ {#テストケース#TARGET_DB}'

      testRunner.testCase.setPropertyValue( "databaseNameの"、たTestString)

      DEF getLocalPropValue = testRunner.testCa se.getPropertyValue( "databaseNameの")

      log.info(getLocalPropValue)

      testRunner.testCase.testSteps [ "プロパティ"]。setPropertyValue( "databaseNameの"、たTestString)

    2. 最後に、我々は持つことができますスクリプトアサーションは、次のように:

      デフgroovyUtils =新しいcom.eviware.soapui.support.GroovyUtils(コンテキスト)を

      デフホルダー= groovyUtils.getXmlHolder(messageExchange.responseContent)

      ホルダー。名前空間[ "NS1"] = "http://schemas.datacontract.org/2004/07/AriaTechCore"

      DEF nodeStatusCode = holder.getNodeValue( "// NS1:のStatusCode")

      アサートnodeStatusCode = nullを

      (nodeStatusCode == "1" であれば! )

      { "パス" log.info}他

      { "失敗" log.info}

      DEF nodeStatusText = holder.getNodeValue( "// NS1:STATUSTEXT")!

      nodeStatusTextを主張= nullを

      (nodeStatusText == "成功")であれば { "合格" log.info}

      DEF nodeRequestNumber = holder.getNodeValue( "// NS1:RequestNumber"){ "失敗" log.info}

      nodeRequestNumbeをアサートR!= nullを

      場合(nodeRequestNumber == context.expand( '$ {#のTestCase#TARGET_DB}'))

      { "合格" log.info}他

      { "失敗"}、あなたの貴重な提案&コメントのおかげでたくさん@Rao

    log.info。

  • 関連する問題