6

SoapUI内の他のGroovyスクリプトを介して再利用できるGroovyスクリプトでクラスを定義したいと思います。

TestSuiteプロパティ内でクラスを定義しようとしましたが、機能しません。私たちはチームで作業し、テストを実行するために全員がSoapUIにJARをインポートする必要があるため、JARでクラスを定義することは避けたいと思います。SoapUI3.6.1を使用しています

これが私のTestSuiteの作り方です:

TestSuite
  TestCase
    TestSteps
       Init         (Groovy Script)
       GetResponse1 (Test Request)
       Test1        (Groovy Script)
       GetResponse2 (Test Request)
       Test2        (Groovy Script)

テストを簡素化するために、「Test1」でクラスを定義し、このクラスを「Test2」で再利用したいと思います。したがって、理想的には、そのクラスを「Init」で定義し、他のGroovyスクリプトからアクセスできるようにします。

どうすればそれを達成できますか?

4

5 に答える 5

7

@Abhey Rathoreのリンクに基づいて、 SoapUIのGroovyスクリプトでグローバルクラスを定義する方法は次のとおりです。

ステップ1:グローバルクラスを宣言する

  • と呼ばれるプロジェクトを作成しますMyRepository
  • このプロジェクトの下で、と呼ばれる無効なTestSuiteを作成しますlib
  • このテストスイートの下に、というTestCaseを作成しますMyClass
  • このテストケースでは、次のようなGroovyスクリプトを作成します。class

プロジェクトツリーは次の画像のようになります。
SoapUIでグローバルクラスを宣言するためのプロジェクトツリー

ステップ2:グローバルクラスコードを書く

と呼ばれるGroovyスクリプト内で、class以下のコードをコピーして貼り付けます。

class MyClass {
     // The three following fields are MANDATORY
     def log
     def context
     def testRunner

     // The constructor below is MANDATORY
     def MyClass(logIn, contextIn, testRunnerIn) {
        this.log = logIn
        this.context = contextIn
        this.testRunner = testRunnerIn
     }

     def myMethod() {
        this.log.info 'Hello World!'
     }
}

// Other scripts elsewhere in SoapUI will access the reused class through their context
context.setProperty( "MyClass", new MyClass(log, context, testRunner) )

ステップ3:グローバルクラスをインポートする

次のスニペットを使用して、どのプロジェクトからでもグローバルクラスをインポートできます。

// Import the class
def currentProject = testRunner.testCase.testSuite.project
currentProject
    .testSuites["lib"]
       .testCases["MyClass"]
          .testSteps["class"]
             .run(testRunner, context)

// Now use it
context.MyClass.myMethod()

SoapUI 5.2.1

于 2016-12-22T09:51:11.423 に答える
5

これを試してみてください。再利用可能なコードで役立つと思います。

http://forum.soapui.org/viewtopic.php?t=15744

于 2014-03-04T20:01:52.300 に答える
1

JARファイルを作成して\bin\extに配置する必要があると確信しています。

SoapUIは再起動時に自動的にそれを取得します(スタートアップのものに記載されているはずです)。

基本的には、JavaまたはGroovyプロジェクトを作成し、(Eclipseを使用して)エクスポートするだけで機能します。SoapUIにはおそらく依存関係が含まれていますが、そうでない場合は、それらのJARを追加することもできます(SoapUIは使用するバージョンとは異なるバージョンを使用する可能性があるため、実行可能なJARを作成するよりも安全です)。

ヘルプが必要な場合は、関連する質問を投稿してください。

于 2012-08-02T16:42:17.823 に答える
0

SoapUI 5.3.0では、設定してコンテキスト変数を取得できるプロパティを使用できます。その変数は、スクリプトアサーションスニペ​​ットで使用できます。

例えば: context.setProperty("prop", "value");

また、さまざまなテストスクリプトから、次の方法で値を取得できます。 context.getProperty("prop");

プロパティをテストスイートのステップとして、またはヘッダーのフィールドの値として定義するときに、プロパティを使用できます。あなたはそれを行うことができます${=context.getProperty("prop");}

于 2017-09-22T16:03:29.397 に答える
0

これをプロジェクトのロードスクリプトに書き込んでから、プロジェクトをリロードするか、単に実行します。

com.eviware.soapui.support.ClasspathHacker.addFile( project.context.expand('${projectDir}') )

実行後、.groovyファイルをsoapuiプロジェクトxmlと同じフォルダーに配置できるようになりました。さらに、何もコンパイルする必要はありません。

例:MyClass.groovy:

class MyClass {String name}

これらのクラスは、他のすべてのスクリプトで通常どおりインポートできます。

import MyClass
assert new MyClass(name:"me") instanceof MyClass

唯一の注意点は、スクリプトのコンパイルに失敗するため、ロードスクリプト(クラスパスを設定するスクリプト)にこれらのインポートを含めることができないことです。プロジェクトのロードスクリプト中に何かをインポートする場合は、ロードスクリプトに別のGroovyスクリプトを「評価」させる(つまり、実行する)だけで、インポートを使用できます。

evaluate (new File (project.context.expand('${projectDir}') + 'myProjectLoadScript.groovy'))

//in myProjectLoadScript.groovy:
import MyClass
/* Do things using MyClass... */

これは私にとって最も簡単な方法のように思われるので、なぜこの答えがオンラインの他の場所で見つからなかったのかわかりません。

于 2018-02-11T02:52:42.723 に答える