我正在为测试步骤编写验证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'
}