SoapUI& Groovy - 如何使用Run testCase从不同的TestCase获取属性

时间:2015-09-11 12:07:41

标签: groovy properties soapui getproperty getproperties

提前抱歉。我相信这不是一个新问题,但我发誓我一直在寻找几天,并尝试了几种解决方案,但没有人完全符合我的需要。我希望你们能帮助我......

我的问题:

  1. 我有一个主要脚本,它将bash命令发送到我们的服务器:
  2. TestSuite: Tools;
       TestCase: sendBashCommands;
          TestStep: groovycript;
    
    1. 此测试脚本由几个使用“Run testCase”的测试用例调用。每个测试用例都有不同的bash命令:
    2. 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 脚本的测试用例级别上使用这些属性。那可能吗?我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我认为你是为维护目的而做的...... 根据您的方法,结果必须为空或空。因为你的groovyscript无法直接获得其他测试用例的属性。如果直接调用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 

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