2011-01-11 7 views
1

のプロパティ展開で使用されていないプロパティは、私があるsoapUI 3.6.1を使用していると私はこのようなテスト構造を持つSOAPインタフェースをテストしたい:あるsoapUI:テストケース

MyWorkspace 
    MyProject 
     TestSuite 
      TestCase Single 
       TestStep 1 
      TestCase Loop 
       Properties #1 
       Groovy #1 
       Run TestCase Single 
       Properties #2 
       Groovy #2 
       Run TestCase Single 

TestCase Singleは束が含まれています同じアカウントIDで実行する必要があるリクエストの数。 TestCase Loopは、別のアカウントIDを使用してTestCase Singleと呼びます。 Properties *はaccount-idを変更するはずです。

MyProjectプロパティaccountId値1234で設定これは、テストケースの単一試験、すなわちTestCase Singleのデフォルト値として動作する必要があります。

Properties #1Properties #2accountId異なる値で指定されています。

TestStep 1を単独でまたはTestCase Loopの一部として実行することを意図しています。

TestStep 1は、以下のウェブサービスに送信されたパラメータであり、一般的なSOAPボディを持っています。このような

 <accId>${='${#accountId}' != '' ? '${#accountId}' : ${#Project#accountId}}</accId> 

Groovy #1Groovy #2外観:

log.info('Using account ' + (context.expand('${#accountId}') != '' ? context.expand('${#accountId}') : context.expand('${#Project#accountId}'))); 

私の問題は、今ということですGroovyスクリプトは正しい値accountId(つまり、ループ内の正しい値)を書き込みますが、TestStep 1は常にプロジェクトの値を使用します。 TestStep 1にループの値を使用したいと思います。私もTestStep 1に以下を入れてデバッグ目的のために

<!-- 
{#Project#accountId}: ${#Project#accountId} 
{#TestSuite#accountId}: ${#TestSuite#accountId} 
{#TestRunContext#accountId}: ${#TestRunContext#accountId} 
{#TestRun#accountId}: ${#TestRun#accountId} 
{#TestCase#accountId}: ${#TestCase#accountId} 
{#TestStep#accountId}: ${#TestStep#accountId} 
{#MockService#accountId}: ${#MockService#accountId} 
{#Global#accountId}: ${#Global#accountId} 
{#System#accountId}: ${#System#accountId} 
{#Env#accountId}: ${#Env#accountId} 
{#accountId}: ${#accountId} 
context.accountId: ${=context.accountId} 
modelItem.accountId: ${=modelItem.accountId} 
request.accountId: ${=request.accountId} 
context.expand(): ${=context.expand('${#accountId}')} 
--> 

私はWiresharkのでネットワークトラフィックをトレースするだけ${#Project#accountId}が値を返したことに気づきました。

私はここで間違っていますか? <accId> -elementをコーディングして、リモートホストに正しい値を送信するにはどうすればよいですか?

答えて

0

私はこの問題を再訪しましたが、なぜ私の最初の試みがうまくいかなかったのか分かりませんが、最良の解決策を見つけたと思います。

私はこれに構造を変更:TestStep 1

context.getTestCase().getTestSuite().setPropertyValue("accountId_loop", "1720"); 

し、適切な行:

言い換えれば、私は Propertiesを取り除くと Grooviesにロジックを移動してしまって

MyWorkspace 
    MyProject 
     TestSuite 
      TestCase Single 
       TestStep 1 
      TestCase Loop 
       Groovy #1 
       Run TestCase Single 
       Groovy #2 
       Run TestCase Single 

 <accId>${='${#TestSuite#accountId_loop}' != '' ? '${#TestSuite#accountId_loop}' : ${#MyProject#accountId}}</accId> 
関連する問題