SoapUI & Groovy - 如何使用 运行 testCase 从不同的 TestCases 获取属性

SoapUI & Groovy - How to get properties from different TestCases using Run testCase

提前致歉。我确信这不是一个新问题,但我发誓我已经找了好几天并尝试了几种解决方案,但没有一个完全符合我的需要。希望大家能帮帮我...

我的问题:

  1. 我有一个主脚本,它向我们的服务器发送 bash 命令:
TestSuite: Tools;
   TestCase: sendBashCommands;
      TestStep: groovycript;
  1. 此测试脚本被多个使用 "Run testCase" 的测试用例调用。每个测试用例都有不同的 bash 命令:
TestSuite: ServerInfo
   TestCase: getServerVersion
      Property: BashCommand="cat smt | grep Version"
      TestStep: Run sendBashCommands

   TestCase: getServerMessage
      Property: BashCommand="cat smt | grep Message"
      TestStep: Run sendBashCommands
   ...

在我的 sendBashCommands.groovyScript 上,我已经尝试了以下内容:

//def bashCmd= context.expand( '${#BashCommand}' );
     //it returns empty;
//def bashCmd= testRunner.testCase.getPropertyValue( "BashCommand" );
     //it returns null;
//def bashCmd= context.getTestCase().getPropertyValue( "BashCommand" );
     //it returns null;
def bashCmd = context.expand('${#TestCase#BashCommand}');
     //it also returns empty;

目前我使用的解决方案适用于项目属性,但我实际需要的是在调用 sendBashCommand 脚本的测试用例级别上使用这些属性。那可能吗?我该怎么做?

我认为你这样做是为了维护目的... 根据您的方法,结果必须为 null 或空。因为你的groovy脚本无法直接获取其他测试用例的属性。如果你直接调用一个getProperty()方法,那么它会引用当前testStep的属性。所以下面的方法可以帮到你。

将以下代码放入您的个人测试用例中,"getServerVersion" 等

def currentProject = testRunner.testCase.testSuite.project
// the following is to store the names of the test suite and the test cases from which you want to call your main script

currentProject.setPropertyValue("TestSuiteName",testRunner.testCase.getTestSuite().getLabel().toString())
currentProject.setPropertyValue("TestCaseName", testRunner.getTestCase().getLabel().toString())
// call sendBashCommands here -> run sendBashCommands

将此代码放入您的主要 groovy 脚本 (sendBashCommands.groovyscript)

def currentProject = testRunner.testCase.testSuite.project
def callingTestCase = currentProject.testSuites[currentProject.getPropertyValue("TestSuiteName")].testCases[currentProject.getPropertyValue("TestCaseName")]
def bashCmd = callingTestCase.getPropertyValue( "BashCommand" )
// to verify
log.info bashCmd 

该项目对所有测试套件都是通用的,因此在任何情况下您都必须使用项目 属性,即满足您的要求:) 享受:)