1

私はsoapUI 3.6.1を使用しており、次のようなテスト構造でSOAPインターフェースをテストしたいと考えています:

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 で実行する必要がある一連のリクエストが含まれています。異なるアカウント ID を使用TestCase Loopして呼び出すことになっています。アカウントIDを変更することになっていますTestCase SingleProperties *

MyProjectaccountId値 1234 で設定されたプロパティがあります。これは、テスト ケースの単一テストのデフォルト値として機能するはずですTestCase Single

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

意図は、TestStep 1単独で、または の一部として実行できるようにすることですTestCase Loop

TestStep 1以下は Web サービスに送信されるパラメーターである共通の SOAP 本体を持ちます。

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

Groovy #1次のようになりGroovy #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}')}
-->

${#Project#accountId}Wireshark でネットワーク トラフィックを追跡したところ、値しか返されていないことに気付きました。

ここで何が間違っていますか?<accId>リモート ホストに正しい値を送信するには、要素をどのようにコーディングする必要がありますか?

4

1 に答える 1

0

今、私はこの問題を再検討しましたが、最初の試みがうまくいかなかった理由がわかりませんが、最善の解決策を見つけたと思います.

構造を次のように変更しました。

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

言い換えれば、私は を取り除きProperties、ロジックを に移動しましたGroovies:

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

および の適切な行TestStep 1:

     <accId>${='${#TestSuite#accountId_loop}' != '' ? '${#TestSuite#accountId_loop}' : ${#MyProject#accountId}}</accId>
于 2011-03-17T07:27:15.303 に答える