在SoapUI免费版中创建脚本库

New*_*Bee 9 groovy soapui

我是SoapUI和groovy脚本的新手

我想创建一个groovy脚本的存储库,可以在各种测试步骤中重用

我正在使用SoapUI免费版,以下是我的SoapUI项目的结构

Project
|-TestSuite
| |-TestCase
|   |-TestSteps
|     |-LocalScript (Groovy TestStep to reuse library scripts)
|     |-OtherTestStep (Run TestCase TestStep)
|-ScriptLibrary
  |-TestCase
    |-TestSteps
      |-GroovyScriptStep1 (Contain a class for commonly used functions)
      |-GroovyScriptStep2 (Contain another class for other functions)
Run Code Online (Sandbox Code Playgroud)

这是我能做的:

我能够创建一个使用中提到的样本库这个职位.与帖子中的示例类似,我在库中的测试步骤(根据上述结构的GroovyScriptStep1)中的代码只是从外部文件中读取一些值,并用于其他TestSuite的测试步骤(上述结构中的LocalScript步骤).

这是问题所在:

现在我想创建一个新类并为其添加一个函数,它需要运行类的信息并简单地打印它.这里的不同之处在于,某些值是在测试运行中生成的,应该传递给库脚本以便处理/打印等.

为了使我的问题更清晰,以下是代码段

我将在这里使用一个简单的场景

示例目标:希望能够打印所有断言和状态(因为这将用于我想要创建库的所有测试用例)

不使用库时的代码相同(这可以作为groovy脚本步骤)

def obj = context.testCase.getTestStepByName("Request 1");
def assertions = obj.getAssertionList()

//Loop on assertions
assertions.each{
    log.info(it.name +  ' --> ' + it.status)
Run Code Online (Sandbox Code Playgroud)

在Library TestSuite的Test case步骤中编写类似的代码

context.setProperty("Assertions", new Assertions());

class Assertions{

    def printAssertion(def someArgumentToGetAssertionlistforTestStepinAnotherTestSuite){


        def obj = ????

        def assertions = obj.getAssertionList()

        //Loop on assertions
        assertions.each{
            log.info(it.name +  ' --> ' + it.status)
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我要调用此方法的代码(LocalScript按照上面的项目结构)

scripts = testRunner.testCase.testSuite.project.testSuites["ScriptLibrary"]; 
scripts.testCases["Scripts"].testSteps["Assertions"].run(testRunner, context);

context.Assertions.printAssertion(ArgumentRequired);
Run Code Online (Sandbox Code Playgroud)

这只是一个例子,我想创建一些更常见的脚本库,这些脚本在本地使用时使用上下文变量

请帮助我,如果需要更多信息/说明,请告诉我

Sam*_*rth 7

我从你的问题中得到的是你想在SoapUI中创建一个可以重用的代码库.我认为最好的方法是创建jar文件并将其部署在SoapUI的ext文件夹中

  1. 使用类创建一个新的groovy脚本文件(在文件命名中遵循java标准,即类名和文件名应该相同)
  2. 编译groovy代码文件
  3. 创建jar文件
  4. 在SoapUI_Home/bin/ext文件夹中部署jar文件
  5. 如果已经打开,请重新启动SoapUI
  6. 创建类的对象并在SoapUI项目中的任何位置使用这些方法

注意:如果要将项目迁移到其他计算机,请确保在项目中使用这些库时也要迁移这些库

详细示例:

第1步:使用类结构创建一个新的groovy脚本文件

一世.考虑包含名为printTestDetails的方法的类ScriptLibrary,如下面的代码所示:

class ScriptLibrary  {

    def context
    def testRunner
    def log

    def printTestDetails(def PrintThisToo) {
        log.info 'Name of the test case is :'+testRunner.testCase.name
        log.info 'Name of the test suite is : '+testRunner.testCase.testSuite.name
        log.info PrintThisToo
    }
}
Run Code Online (Sandbox Code Playgroud)

II.ScriptLibrary.groovy在这种情况下,使用类名保存文件

第2步:编译代码

一世.打开命令提示符并触发以下命令(从.groovy保存文件的文件夹)

编译代码:

groovyc -d classes SimplePrint.groovy
Run Code Online (Sandbox Code Playgroud)

第3步:创建jar文件

一世.编译完代码后,我们可以创建jar创建jar文件:

jar cvf SimplePrint.jar -C classes .
Run Code Online (Sandbox Code Playgroud)

第4步:SoapUI_Home/bin/ext文件夹中部署jar文件

步骤5:如果已经打开,则重新启动SoapUI

步骤6:创建类的对象并在SoapUI项目中的任何位置使用方法

一世.创建对象

def scripts = new ScriptLibrary(context:context, log:log, testRunner:testRunner)
Run Code Online (Sandbox Code Playgroud)

II.调用方法

scripts.printTestDetails(“This is my argument”)
Run Code Online (Sandbox Code Playgroud)

我希望这可以解决你的问题,这种方法将允许你在SoapUI中的任何地方自由使用代码,最重要的是将解决你的问题context,log以及testrunner在外部代码

您还可以使用您选择的任何IDE来创建代码库,并在其上工作以编译和创建jar.

如果您有任何疑问或需要进一步澄清,请与我们联系