我开发了一些SoapUI案例,它通过从文件中读取属性来在每个测试用例的开头设置属性。这很好用,然后我可以在每个测试请求步骤中通过语法propertyA
访问每个属性(比如${propertyA}
)。
现在我意识到每个测试用例的其中一个属性是相同的,所以我认为我为此创建了一个testsuite属性,并从测试用例属性文件中删除了属性定义。首先,我的测试用例都失败了,导致现在' propertyA'我不知道,但我发现(根据http://www.soapui.org/Scripting-Properties/property-expansion.html),一个解决方案是将propertyA
的每个引用替换为#testSuite#propertyA
。
这有点乏味,所以我想在每个测试用例的开头创建一个groovy脚本,它从测试套件属性创建一个测试用例属性。根据 http://www.soapui.org/Scripting-Properties/tips-a-tricks.html我认为像
这样的剧本def testSuiteProperty = testRunner.testCase.testSuite.getPropertyValue("propertyA")
testRunner.testCase.setPropertyValue("propertyA", testSuiteProperty)
应该做的工作。如果我log.info
testSuiteProperty
的值确实提供了所需的值,并且如果我将testCase属性分配给某个变量并且log.info
它,它会显示正确的值。
但是,在下一个测试步骤中,propertyA
未知。只是为了确保我尝试在那里使用${#testCase#propertyA}
,但这也是未知的。我在这里弄错了什么?
答案 0 :(得分:0)
我认为您的问题是t
中的testCase
${#testCase#propertyA}
必须为大写:${#TestCase#propertyA}
。如果我用你的代码添加一个groovy测试步骤:
def testSuiteProperty = testRunner.testCase.testSuite.getPropertyValue("propertyA")
testRunner.testCase.setPropertyValue("propertyA", testSuiteProperty)
然后我添加一个SOAP测试步骤,跟随xml:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:open="http://www.openuri.org/">
<soapenv:Header/>
<soapenv:Body>
<open:procesa>
<open:selector>${#TestCase#propertyA}</open:selector>
</open:procesa>
</soapenv:Body>
</soapenv:Envelope>
它可以正常工作,但是如果我使用${#testCase#propertyA}
,则找不到属性值。
此外,您可以检查SOAP测试步骤请求左侧的raw
选项卡中是否使用了正确的值。在此选项卡中,显示请求,其属性由其值替换。
希望这有帮助,