如何在运行时从SOAP UI中的groovy脚本调用带有输入的测试步骤



我正在为测试步骤编写验证groovy脚本,旨在测试SOAP Web服务。

现在,我想调用相同的测试步骤,使用来自groovy脚本的不同输入值。这可能吗?我不想再写一个测试步骤。

谢谢

是的,这是可能的,无论如何你的问题太开放了,所以我打算采用以下方法。

例如,在testStep请求中使用testCase属性,这样您可以更改该属性并多次重用相同的请求。为此,在TestStep: ${#TestCase#YourProperty}中使用以下语法,例如,假设您有一个SOAP请求,它可以是:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
        <someRequest>
            <changeValue>${#TestCase#yourProperty}</changeValue>
        <someRequest>
   </soapenv:Body>
</soapenv:Envelope>

然后在你的groovy testStep中,你可以设置属性值并在你想要的时候调用你的testStep,看看下面的代码,我希望它是不言自明的:

// get the testCase
def tc = testRunner.testCase
// set the value for your property
tc.setPropertyValue('yourProperty','someValue')
// get testStep by its name
def ts = tc.getTestStepByName('TestStepName')
// invoke testStep 
ts.run(testRunner,context)

例如,如果您将根据属性值多次运行此testStep,则可以使用:

// get the testCase
def tc = testRunner.testCase
// get testStep by its name
def ts = tc.getTestStepByName('TestStepName')
// property values
def propertyValueArray = ['firstValue','anotherValue','moreValues','lastOne']
// for each property value
propertyValueArray.each { value ->
    // set the value for your property
    tc.setPropertyValue('yourProperty',value)
    // invoke testStep 
    ts.run(testRunner,context)
}

希望有帮助,

您可以在单元测试的'where'定义中使用参数。在那里添加任何您喜欢的内容,并在第一行

按名称使用值。
def "Field '#field' with value '#val' should result in '#code'"() {
    when:
    def myObject = ["$field": val]
    then:
    fooMethod(myObject) == code
    where:
    field     | code       | val
    'myField' | 'nullable' | null
    'myField' | 'blank'    | ''
    'myField' | 'valid'    | 'abc123'
}

相关内容

  • 没有找到相关文章

最新更新