提前抱歉。我相信这不是一个新问题,但我发誓我一直在寻找几天,并尝试了几种解决方案,但没有人完全符合我的需要。我希望你们能帮助我......
我的问题:
TestSuite: Tools;
TestCase: sendBashCommands;
TestStep: groovycript;
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 脚本的测试用例级别上使用这些属性。那可能吗?我怎么能这样做?
答案 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
该项目对所有测试套件都是通用的,因此您必须在任何情况下使用项目属性,即根据您的要求:) 享受:)