当前位置: 首页 > 知识库问答 >
问题:

我们如何使用groovy脚本在测试用例中添加SOAP请求测试步骤

齐航
2023-03-14

我正在寻找在测试用例中添加 SOAP 请求测试步骤,从不同的 TestSuite 和测试用例,我已经对部分进行了编码以添加 Groovy 脚本以满足相同的要求,但无法添加 SOAP 请求测试步骤。有什么帮助吗?

以下是我的代码:

import com.eviware.soapui.impl.wsdl.teststeps.registry.GroovyScriptStepFactory

suite = context.testCase.testSuite.project.addNewTestSuite("AutomatedTestSuite")
tc = suite.addNewTestCase("automatedTestCase")
gs = tc.addTestStep( GroovyScriptStepFactory.GROOVY_TYPE, "GroovyScript1" )
gs2 = tc.addTestStep( GroovyScriptStepFactory.GROOVY_TYPE, "GroovyScript3" )
gs.properties["script"].value = 'log.info(\'hello world\')'

共有1个答案

朱鸿畅
2023-03-14

您可以通过项目获得另一个testSuite,testCase和testStep的名称,如下所示:

def project = context.testCase.testSuite.project
def testStep = project.testSuites['TestSuiteName'].testCases['TestCaseName'].testSteps['testStepName']

或者替代使用getXXXXbyName方法的数组方法:

def testStep = project.getTestSuiteByName('TestSuiteName').getTestCaseByName('TestCaseName').getTestStepByName('testStepName')

然后要将此测试步骤添加到您的测试案例中,您可以使用clone步骤(WsdlTest步骤测试步骤,字符串名称)方法。

在您的脚本中:

def suite = context.testCase.testSuite.project.addNewTestSuite("AutomatedTestSuite")
def tc = suite.addNewTestCase("automatedTestCase")

// get desired testStep
def project = context.testCase.testSuite.project
def testStep = project.testSuites['TestSuiteName'].testCases['TestCaseName'].testSteps['testStepName']
// add it to your new generated testCase
tc.cloneStep(testStep,testStep.name + "_Copy")

根据评论进行编辑

如果您想创建一个新的SOAP testStep,而不是另一个SOAP test step的副本,您可以使用下面的代码来完成。考虑到创建SOAP类型的testStep需要比创建groovy类型的test step更多的信息,因为需要wsdl操作信息(在这个例子中,我们使用第一个,但是如果您有多个test step,请注意您所使用的信息)。

在我看来,第一种方法更简单,您可以复制另一个测试步骤并更改您想要的属性...不管怎样,如果你想这样做,你可以:

import com.eviware.soapui.impl.wsdl.teststeps.registry.WsdlTestRequestStepFactory
def suite = context.testCase.testSuite.project.addNewTestSuite("AutomatedTestSuite")
def tc = suite.addNewTestCase("automatedTestCase")

// get the WSDL operation... for the example we take the first one
// however if you've more get the correct one
def operation = testRunner.testCase.testSuite.project.getInterfaceAt(0).getOperationList()[0]
// factory to create the testStepConfig
def factory = new WsdlTestRequestStepFactory()
def config = factory.createConfig(operation,'stepName') 
// create the testStep
def testStep = tc.addTestStep(config)
// change the request
testStep.properties['Request'].value = '<request>someData</request>'

希望对您有所帮助,

 类似资料:
  • 我正在编写一个groovy脚本来执行/自动化我的测试套件。在一个测试案例中,我有一个HTTPRequest,其中我有一个请求URL、参数(用户名和密码)和方法(GET)来获取token-id,然后我会将该token id传递给下一步(SOAP请求)来获取数据。 我陷入了一个困境,需要使用groovy传递参数(用户名和密码)、请求URL和方法(GET)。我有一个在测试用例下人工创建的测试步骤,我只需

  • 我正在编写一个Groovy脚本来使用SOAP Web服务。首先,我在SOAP中导入了我的WSDL并创建了一个项目。 那么所有的SOAP请求都会自动生成。 现在我尝试编写一个Groovy来使用生成的SOAP请求调用SOAP服务。 现在这是我的时髦脚本 我想访问在SOAPUI-CreateNote中生成的相同SOAP请求。我如何访问它? 我的实际需求是访问Groovy脚本中的所有SOAP请求——这样我

  • 我正在寻找一种方法来使用当前的测试用例/测试步骤名称作为我的请求xml的一个属性的值。 有人知道语法吗?我查了SoapUI文档,但找不到 我正在寻找类似的东西 ${#TestCase#TestStep#标签}

  • 我正在为测试步骤编写一个验证 groovy 脚本,旨在测试 SOAP Web 服务。 现在,我想调用同一个测试步骤,使用与groovy脚本不同的输入值。有可能吗?我不想再写一个测试步骤。 谢谢

  • 我正在使用Selenium IDE记录函数创建测试用例。我想在应用程序的某些部分截图,我正在测试。 使用Selenium IDE的UI很容易: 命令:,目标: 但每次想要截屏时手动输入这个(或复制粘贴)是不方便的,所以我决定制作一个插件(Selenium IDE工具栏上的一个按钮),一旦我点击它,它就会将这个截屏命令添加到testcase中。 我创建了我的按钮,它可以在工具栏上看到,但现在它什么也

  • 我正在尝试使用Jmeter测试一个soap服务。当使用SOAP/XML-RPC请求元素时,服务给出正确的结果。当使用Fiddler执行时,它给出正确的响应(响应代码200)。 但是当我使用Http Request在Jeter上运行相同的服务时。它返回响应代码为500并给出 “请求格式无效:文本/xml。 这在响应数据中。我试着把它改成许多格式,像“应用程序/xml”等等,但是没有用。 [HTTP_