0

プログラミングとSoapUI(1週間前のようなもの)は初めてだと言うことから始めてもいいですか。質問をすることを前もってお詫びします。

問題

基本的に、私はWebサービスを自動化しようとしています。SOAPUIでGroovyを使用してxmlを作成し、それをリクエスト本文の一部としてWebサービス(SOAPではなくREST)に送信し、受信した応答に対して何らかのアサーションを実行する必要があります。私はかなりの数のリクエストを送信するので、自動化する理由があります。

私の提案した解決策(私にはわかりません)

import groovyx.net.http.HTTPBuilder
import groovyx.net.http.ContentType
import groovyx.net.http.Method

class XmlGenerator {

  // I created a class i.e. called XmlGenerator with a
  // static method called GetXML() which looks like this:
  public static def GetXML() 
  {
    def  writer = new StringWriter()
    def  xml = new MarkupBuilder(writer)
    xml.GetDMessage() //creating the xml message
    {
      PrescribedItems 
      {
        PrescribedMethod(xml,'Some Value','Some Value','Some Value')
        PrescribedItem
        {
          PrescribedMethod(xml,'Some Value','Some Value','Some Value')
        }
      }
    }
    return writer
  }

  // This method creates the XML needed but then i need to
  // pass the xml generated to a request boy; so i
  //create another method within the same class:  
  static def postXML(String baseUrl, String path)
  {
    def RequestBody = XmlGenerator.GetXML()  // i am not sure if this will work
    try 
    {
      def ret = null
      def http = new HTTPBuilder(baseUrl)
      http.request(Method.POST, ContentType.XML) 
      {
        uri.path = path
        body = RequestBody
      }
    }
    catch (groovyx.net.http.HttpResponseException ex) 
    {
      ex.printStackTrace()
      return null
    }
    catch (java.net.ConnectException ex) 
    {
      ex.printStackTrace()
      return null
    }
  }
}

概要

XmlGenerator()2つのメソッドで呼び出されるクラス。GetXML()(XMLの生成に使用)およびpostXML()(によって生成されたXMLをWebサービスに送信するために使用されますGetXML()。)

質問

  1. GetXML()この2つのメソッド(および)が他のリクエストメッセージで使用されていることを確認するにはどうすればよいですか?postXML()つまり、Groovyスクリプトをインポートする必要がありますか?インポートを実行しますか...GroovyScriptName、はいの場合、どのようにお願いしますか?

  2. どうすればxmlを作成し、後続のリクエストメッセージでリクエストを実行できますか?例えば; 私はこれをしますか; XmlGenerator() gen = new XmlGenerator()、次に実行しgen.GetXML()gen.postXML()リクエストを作成して実行します。また、このすべてにおいてtestRunnerはどのような役割を果たすことができますか

  3. HTTPBuilder, ContentType , Method can not be resolvedスクリプトにコードをインポートしたにもかかわらず、コードを実行すると現在スローされます(上記を参照)

  4. 最後に、このフレームワークを構築する上でプロパティはどのような役割を果たすことができますか?各リクエストは他のリクエストから独立していることを念頭に置いてください。つまり、テストの実行中に1つのリクエストから別のリクエストに何も渡されません。

4

1 に答える 1

3

次に示すように、標準の soapui 機能を使用して、テストする REST 要求を指定できます。

http://www.soapui.org/REST-Testing/getting-started.html

上記のページの手順に従って、次を作成します。

  1. 新しい REST サービス
  2. 新しい REST リソース
  3. 新しい REST メソッド

次に、そのリクエストを呼び出すテスト ケースに REST テスト ステップを追加できます。

その後、Groovy テスト ステップを REST テスト ステップの前に挿入して、xml 本体を構築できます。XML 文字列を作成する簡単な例を次に示します。

import groovy.xml.MarkupBuilder

context.writer = new StringWriter()
def xml = new MarkupBuilder(context.writer)
xml.books() {
  book(name:'blue ocean') {
    format ('paperback')
    year ('2010')
  }
  book(name:'quicksilver') {
    format ('hardback')
    year ('2011')
  }
}

XML がコンテキスト変数 (context.writer) に割り当てられていることに注意してください。これにより、テストの実行中、テスト ケースの範囲内で後続のステップで使用できるようになります。

次に、次のコードを REST テスト ステップの本文に挿入します。

${=context.writer}

最後に、REST テスト ステップ内にアサーションを追加するオプションがあります。これに関する情報は次のとおりです。

http://www.soapui.org/Functional-Testing/getting-started-with-assertions.html

于 2013-04-27T22:42:22.110 に答える