Web サービスまたは HTTP/SOAP/CoAP 要求ステップの入力/出力プロパティの操作

関連:API テストのみ

コードを使用して、HTTP/SOAP/CoAP 要求や Web サービスのステップのプロパティにアクセスし、プロパティを設定します。

注意: REST サービスと WADL ステップでは、標準的な API テスト・アクティビティと同じ方法でイベント・ハンドラ・コードを使用します。

詳細については、「ステップの入力、出力、チェックポイントの各プロパティへのアクセスと設定」を参照してください。

入力プロパティのプロパティ値へのアクセスと設定

  1. キャンバスで、Web サービス、SOAP 要求、または CoAP 要求の送信ステップを選択します。

  2. 要求の本文が含まれている XML をロードします。

    [プロパティ]表示枠で、[XML 本文]タブ(SOAP 要求)または[CoAP]タブ(CoAP 要求)を開きます。

  3. XML のロード]ボタンをクリックし、要求ファイルを指定します。

  4. [プロパティ]表示枠で、[イベント]タブを開きます。

  5. [イベント]タブで、イベント・ハンドラを作成します。

先頭に戻る

チェックポイントのプロパティ値を追加します。

Web サービスまたは SOAP 要求のステップ内のチェックポイントについて、コードを使用してその値を追加できます。これは、チェックポイントが、動的に作成される応答に基づく場合に非常に役立ちます。

注意: Web サービス呼び出し内に設定されている既存のチェックポイントは、値を変更できません。

  1. CodeCheckpointEvent のイベント・ハンドラを作成します(「チェックポイントの値の設定」を参照)。

  2. チェックポイントを有効にするコード(args.Checkpoint.RunUICheckpoints = true)を含む行の後に、チェックポイントの値を入力します。使用する構文は次のとおりです。

    args.Checkpoint.Assert.Equals(<実際の値>,<期待値>);

    <実際の値> および <期待値> パラメータで、ステップの出力エンベロープを通じてチェックポイントのプロパティにアクセスします。出力パラメータにアクセスするには、「入力プロパティのプロパティ値へのアクセスと設定」上記で説明したのと同じ構文を使用します。ただし、InputEnvelopeOutputEnvelope に変更して、正しいプロパティにアクセスする必要があります。

先頭に戻る

SOAP フォールトと SOAP フォールトの値の指定

コードを使用して、SOAP フォールトを予期するように Web サービス呼び出しまたは SOAP 要求を設定できます(予期されるフォールト・プロパティも指定できます)。

  1. キャンバスで Web サービスまたは SOAP 要求のステップを選択します。

  2. [プロパティ]表示枠で、[イベント]タブを開きます。

  3. [イベント]タブで、AfterGenerateRequest イベントのイベント・ハンドラを作成します。[TestUserCode.cs]ファイルが開きます。

  4. TestUserCode.cs ファイルの TODO セクションで、予期されるフォールトを指定します。使用する構文は、次のとおりです。

    this.<アクティビティ>.FaultExpected = true;
  5. [イベント]タブで、CodeCheckpointEvent イベントのイベント・ハンドラを作成します。

  6. TestUserCode.cs ファイルの TODO セクションで、CodeCheckpointEvent セクションに、予期されるフォールトを指定します。使用する構文は、次のとおりです。

    string xpath = "<フォールト・プロパティへのパス>"; 
    string actualValue = this.StServiceCallActivity<アクティビティ #>.OutputEnvelope.SelectSingleNode(xpath).InnerText; 
    string expectedValue = "soap:Server"; 
    args.Checkpoint.Assert.Equals(actualValue,expectedValue);

    注意: 上記構文中で指定する文字列名は、独自の名前を指定できます。

先頭に戻る

テスト・ステップへの特定の要求ファイルの割り当て

  1. キャンバスで Web サービスまたは SOAP 要求のステップを選択します。

  2. [プロパティ]表示枠で、[イベント]タブを開きます。

  3. [イベント]タブで、AfterGenerateRequest イベントのイベント・ハンドラを作成します。[TestUserCode.cs]ファイルが開きます。

  4. TestUserCode.cs ファイルの TODO セクションで、予期されるフォールトを指定します。使用する構文は、次のとおりです。

    this.<activity>.InputEnvelope.LoadXml(@"<応答ファイルへのパス>");

    注意: 応答は、ファイルからではなく、前のステップからロードすることもできます。その場合は、@"<応答ファイルへのパス>" 文字列の代わりに、前のステップの OutputEnvelope にアクセスする必要があります。ステップの出力プロパティにアクセスする処理の詳細については、「チェックポイントの値の設定」を参照してください。

先頭に戻る

OnSendRequest イベントで Web サービス・ステップに特定の要求ファイルを割り当て

  1. キャンバスで Web サービスまたは SOAP 要求のステップを選択します。

  2. [プロパティ]表示枠で、[イベント]タブを開きます。

  3. [イベント]タブで、OnSendRequest イベントのイベント・ハンドラを作成します。[TestUserCode.cs]ファイルが開きます。

  4. TestUserCode.cs ファイルの TODO セクションで、予期されるフォールトを指定します。使用する構文は、次のとおりです。

    System.Xml.XmlDocument envelope = new XmlDocument(); 
    envelope.LoadXml(System.Text.Encoding.UTF8.GetString(args.Message)); 
    
    string xpath = "<プロパティへの完全修飾 XPath>"; 
    envelope.SelectSingleNode(xpath).InnerText = "<入力する値>"; 
    	
    args.Message = System.Text.Encoding.UTF8.GetBytes(envelope.OuterXml);

先頭に戻る

非同期 Web サービス呼び出しのプロパティの設定

  1. キャンバスで Web サービスまたは SOAP 要求のステップを選択します。

  2. [プロパティ]表示枠で、[イベント]タブを開きます。

  3. [イベント]タブで、AfterGenerateRequest イベントのイベント・ハンドラを作成します。[TestUserCode.cs]ファイルが開きます。

  4. TestUserCode.cs ファイルの TODO セクションで、非同期呼び出しを指定します。使用する構文は、次のとおりです。

    <アクティビティ名>.IsAsync = true;
  5. IsAsync のコードの下で、Web サービスまたは SOAP 要求の応答をリッスンするポートを指定します。使用する構文は次のとおりです。

    this.<アクティビティ>.ListenOnPort = <ポート番号>;

先頭に戻る

Web サービス呼び出しへの入力添付ファイルの追加

コードを使用して、添付ファイルを Web サービス呼び出しとともに送信します。これは、動的に添付ファイルを作成するため、テストの設計中に API テスト・インタフェースで添付ファイルを追加できないときに非常に便利です。

注意: 添付ファイルをテスト外からロードする場合は、スキップして手順 5 に進みます。

  1. キャンバスにカスタム・コード・ステップを追加します。

  2. [プロパティ]表示枠で、[入出力プロパティ]タブを開きます。

  3. [入出力プロパティ]で[追加]をクリックし、[入力パラメータの追加]を選択します。[入力パラメータの追加]ダイアログ・ボックスで、パラメータにわかりやすい名前を付けます。

  4. パラメータを目的の添付ファイルにリンクします。詳細については、「API テスト/コンポーネント・ステップへのデータの割り当て」を参照してください。

  5. キャンバスで Web サービスまたは SOAP 要求のステップを選択します。

  6. [プロパティ]表示枠で、[イベント]タブを開きます。

  7. [イベント]タブで、AfterGenerateRequest イベントを作成します。[TestUserCode.cs]ファイルが開きます。

  8. TestUserCode.cs ファイルの TODO セクションで、追加する添付ファイルを指定します。使用する構文は、次のとおりです。

    string attachmentsInfo =
    	@"<InputAttachments>
    		<Type> <添付ファイルのタイプ> </Type>
    		<Attachments>
    			<Origin> <ファイルへのパス> </Origin>
    			<OriginType> File </OriginType>
    			<ContentType> <コンテンツのタイプ> </ContentType>
    			<ContentID>Auto</ContentID>
    		</Attachments>
    	</InputAttachments>"; 
    
    this.StServiceCallActivity<アクティビティ #>.InputAttachments = new XmlDocument(); 
    this.StServiceCallActivity<アクティビティ #>.InputAttachments.LoadXml(attachmentsInfo);

    添付ファイルを追加するコードの前に、@<InputAttachments> のコードで示すように、添付ファイルのプロパティを定義する必要があります。定義したプロパティは、[プロパティ]表示枠の[添付ファイル]タブに、テスト・ステップに対して表示されます。添付ファイルに必要なプロパティ値の詳細については、「[添付ファイル]タブ([プロパティ]表示枠 - API テスト)」を参照してください。

    注意: <InputAttachments> 開始タグと </InputAttachments> 終了タグの間に、複数の添付ファイルを定義できます。これは、上記に示す構文(<Attachments> タグと </Attachments> タグの間)を使用して定義します。

  9. 任意 - [プロパティ]表示枠の[添付ファイル]タブで定義済みの添付ファイルを上書きするには、次の構文を使用します。

    string <文字列名> = "<[添付ファイル]タブで定義された添付ファイルへの完全修飾 XPath>";
    this.StServiceCallActivity<アクティビティ #>.InputAttachments.SelectSingleNode(<文字列名>).InnerText = @"<ファイルへのパス>";
    

    注意: これは、添付ファイルを上書きするだけであり、添付ファイルのプロパティは更新されません。

先頭に戻る

Web サービス呼び出しの応答の添付ファイルへのアクセス

Web サーバの応答の添付ファイルは、UFT One の標準設定ではテストのフォルダ内の実行結果フォルダに保存されます。ただし、これらの添付ファイルは、イベント・ハンドラを使用してアクセスすることもできます。

  1. キャンバスで、Web サービス呼び出しを保存する、Web サービスまたは SOAP 要求のステップを選択します。

  2. [プロパティ]表示枠で、[イベント]タブを開きます。

  3. [イベント]タブで、AfterExecuteStepEvent イベントのイベント・ハンドラを作成します。[TestUserCode.cs]ファイルが開きます。

  4. TestUserCode.cs ファイルの TODO セクションで、添付ファイルの情報にアクセスします。使用する構文は、次のとおりです。

    string <文字列名> = System.IO.Path.Combine(this.StServiceCallActivity<アクティビティ #>.Context.ReportDirectory,"Attachments");
    string[] <名前> = System.IO.Directory.GetFiles(<文字列名>);

    このイベント・ハンドラは、Web サービスの応答で返された添付ファイルの完全パスを含む配列を返します。

先頭に戻る

Web サービス呼び出しの HTTP ヘッダの追加

Web サービス呼び出しまたは SOAP 要求のステップを編集しているときに、イベントを使用して HTTP ヘッダを追加できます。これは、その情報のソースがテスト実行中に動的に作成される場合に便利です。

  1. キャンバスで Web サービスまたは SOAP 要求のステップを選択します。

  2. [プロパティ]表示枠で、[イベント]タブを開きます。

  3. [イベント]タブで、BeforeApplyProtocolSettings イベントのイベント・ハンドラを作成します。[TestUserCode.cs]ファイルが開きます。

  4. TestUserCode.cs ファイルの TODO セクションにヘッダ要素を追加します。使用する構文は、次のとおりです。

    this.StServiceCallActivity4.HttpRequestHeaders.Add("<header key>", "< key value>");
    

注意: HTTP ヘッダの値は別の方法でも設定できます。[プロパティ]表示枠の[入力/チェックポイント]タブで RequestHeader ノードを展開し、[名前]行と[]行からデータ・ソースにリンクします。詳細については、「[リンク元の選択]ダイアログ・ボックス(API テスト)」を参照してください。

イベント・ハンドラでコードを使用するヘッダを変更すると、テスト実行中に[プロパティ]表示枠の値より優先されます。

先頭に戻る

REST サービス呼び出しの HTTP ヘッダ

UFT One 11.51 以前または Service Test 11.51 以前で作成されたAPIテストを使用している場合に、HTTP ヘッダを REST サービスまたは REST サービスの内部 HTTP 要求ステップに動的に追加するには、次の手順を実行します。

  1. キャンバスで REST メソッド・ステップを選択します。

  2. [プロパティ]表示枠で、[イベント]タブを開きます。

  3. [イベント]タブで、BeforeExecuteStepEvent イベントのイベント・ハンドラを作成します。[TestUserCode.cs]ファイルが開きます。

  4. TestUserCode.cs ファイルの TODO セクションで、希望する配列長を割り当てます。使用する構文は、次のとおりです。

    (args.Activity as HTTPActivity).RequestHeaders = 

    new HP.ST.Shared.Utilities.Pair<string, string>[<ヘッダ数>];
    (args.Activity as HTTPActivity).RequestHeaders = new HP.ST.Shared.Utilities.Pair<string, string>[2];
  5. 割り当てコードの下で、配列要素の <HeaderName><HeaderValue> で各配列要素を指定します。

     (args.Activity as HTTPActivity).RequestHeaders[0] = new HP.ST.Shared.Utilities.Pair<string, string>("<ヘッダ名>", "<ヘッダ値>")
    

    注意: 割り当てステートメントでの指定どおりに、ヘッダごとに別の行で記述することが必要になります。

先頭に戻る

実行時における SOAP 要求のセキュリティ・ヘッダの変更

  1. キャンバスで、SOAP 要求ステップ(SOAP を使用した Web サービスの呼び出しステップ)を選択します。

  2. [プロパティ]表示枠で、[イベント]タブを開きます。

  3. [イベント]タブで、AfterProcessRequestSecurity イベントのイベント・ハンドラを作成します。[TestUserCode.cs]ファイルが開きます。

  4. TestUserCode.cs ファイルの TODO セクションで、文字列の置換を実行して、新しいユーザ名資格情報を追加します。
    string s = args.Message.InnerXml.Replace("<wsse:Username>User</wsse:Username>","<wsse:Username>New User</wsse:UserName>");
    args.Message.InnerXml = s;
  5. 文字列置換コードの下にある、ヘッダ XML を変更します。

    XmlDocument xmlDocument = args.Message; 
        XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(xmlDocument.NameTable); 
        xmlnsManager.AddNamespace("wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"); 
        xmlnsManager.AddNamespace("wsu", http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"); 
        xmlDocument.SelectSingleNode("//wsse:Username",xmlnsManager).InnerText = "New Name"; 
        args.Message = xmlDocument;

先頭に戻る

未加工の SOAP 要求へのアクセスと変更(送信する前)

  1. キャンバスで Web サービスまたは SOAP 要求のステップを選択します。

  2. [プロパティ]表示枠で、[イベント]タブをクリックします。OnConstructRawRequest のイベント・ハンドラを作成します。

  3. TestUserCode.cs ファイルを開いて、TODO セクションでプロパティ値を変更します。

    次の構文を使用します。

    This.StServiceCallActivity<activity #>.RawRequest = @"<期待する要求値>";

先頭に戻る

その他の参照項目: